我一直在玩谷歌脚本编辑器,我已经用了很多。
我要研究的下一个任务是在复制模板时自动格式化和文本插入/替换。
一个示例用例如下:在我的组织中,我向模板库提交了一个文档。创建模板副本时,我希望它自动插入今天的日期和当前时间(四舍五入到最接近的小时(。
这是一个关于触发器的问题。文本替换位既简单又容易。更不用说这只是一个基本的用例,我将在时间表等方面尝试更多类似的行为。
我遇到的问题是,我似乎无法让触发器像我希望的那样工作。
我认为可以尝试使用的两个触发器:onOpen(e)
和onInstall(e)
。
onOpen(e)
虽然有效,但效果"太好了"。也就是说,它还替换了原始模板上的文本,在更新这些模板中的信息时会造成麻烦。
onInstall(e)
,我认为这可以像创建Doc的副本一样工作,也可以"安装"脚本。然而,这个函数似乎根本没有运行。
当从模板创建文档时,让触发器只发生一次,有什么想法吗?
干杯,Bricktron
首先,触发器onInstall(e)
仅适用于外接程序。现在来到onOpen(e)
,在我看来,您可以使用Google Apps Script Property的服务来存储一个标志,该标志可以帮助您的代码识别该文件是否已打开。
因此,对于第一次运行onOpen(e)
,请分配属性,例如:propertyService.setProperty("opened","TRUE")
,下次您可以通过访问该属性来检查它是否已经"打开"。
示例:
var openedFlag=propertyService.getProperty("opened");
if(openedFlag=="TRUE"){
//Document has been modified
//Do not run the modifiable code again
}else {
//First time
//Edit the file
//Set the propertyService to "TRUE"
}