谷歌应用程序脚本,在复制文档时调用函数一次



我一直在玩谷歌脚本编辑器,我已经用了很多。

我要研究的下一个任务是在复制模板时自动格式化和文本插入/替换。

一个示例用例如下:在我的组织中,我向模板库提交了一个文档。创建模板副本时,我希望它自动插入今天的日期和当前时间(四舍五入到最接近的小时(。

这是一个关于触发器的问题。文本替换位既简单又容易。更不用说这只是一个基本的用例,我将在时间表等方面尝试更多类似的行为。

我遇到的问题是,我似乎无法让触发器像我希望的那样工作。

我认为可以尝试使用的两个触发器: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"
}

最新更新