提问人:Luis Fernando Medina Iglesias 提问时间:11/18/2023 最后编辑:TheMasterLuis Fernando Medina Iglesias 更新时间:11/18/2023 访问量:44
如何添加公式 TODAY() 以在应用程序脚本中对两个日期之间的验证进行编程
How to add the formula TODAY() for programming a validation between two dates in apps script
问:
我有一个表格,我们在其中添加了在站点中发生的失败(用于工作项目),要添加的第一个日期是扩展日期,第二个是注意日期,我希望关注日期介于扩展日期和今天之间,因为显然你不能说你将来参加了一个站点。
问题是,当我在 Google 表格中进行验证时,我可以轻松地输入我想要的两个值,即单元格“D10”和公式“TODAY()”,这工作得很好,但我在应用程序脚本中制作了一个表单,因此这些验证必须由代码自动添加,所以我录制了一个宏以查看它在代码中的工作原理,我得到了这个:
spreadsheet.getRange('H10').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.setHelpText('Introduce una fecha entre el =D10 y el =HOY()')
.requireDateBetween(new Date(1899, 11, 30), new Date(1899, 11, 30))
.build());
代码是西班牙语的,因为这是我使用的语言)但正如你所看到的,验证的描述说它在'D10'和'HOY()'(TODAY())之间,但在'requireDateBetween'中,它使用完全相同的日期作为开始和结束: '1899, 11, 30', 我不得不再次说,验证工作得很好, 但是再次使用它没有效果,无论如何,我修改了它以在另一个单元格中使用它,并在该单元格中通过代码进行验证:
var ss= SpreadsheetApp.getActiveSpreadsheet()
var form= ss.getSheetByName('REGISTRAR_FALLA')
form.getRange('H11').setDataValidation(SpreadsheetApp.newDataValidation().setAllowInvalid(false).setHelpText('Introduce una fecha entre el =D10 y el =HOY()').requireDateBetween(new Date(form.getRange('D11').getValue()), new Date()).build());
因此,使用这样的代码,我从单元格“D11”中获取开始日期,并从今天的日期到结束,但是今天的日期不像“TODAY()”公式那样工作,所以明天它不会更新,它仍然会保留在今天的日期,我上传了一些图片,以便您可以看到它在Google表格中的显示方式:
Validación hecha con el propio google sheets y validación hecha con apps script
所以我想知道的是,是否可以将代码中的该公式添加到验证中,以便对其进行更新。
答:
您可以通过 .requireFormulaSatisfied 使用自定义公式数据验证:
.requireFormulaSatisfied(`=ISBETWEEN(H2,0,TODAY())`)
确保与应用数据验证的范围相同。H2
评论
.requireDateBetween(new Date(1899, 11, 30), new Date());