Google apps script 在GoogleSheets模板中使用DriveApp类
我已经在应用程序脚本中编写了一个函数,可以在活动电子表格旁边创建一个新文件夹,但当涉及到触发器时,我会崩溃 我认为,要创建文件夹,您需要使用可安装的触发器,而不是简单的触发器,但我正试图在Google Sheets模板文件中执行此操作,因此无法使用UI安装触发器 当我尝试以编程方式创建触发器时,我只得到一个错误消息:您没有调用ScriptApp.newTrigger的权限。这可能是因为文件是从模板创建的? 当从模板文件创建新的电子表格时,是否有一种方法可以自动安装该触发器,最好不要先请求用户授权 这将建立在G套件,将只需要由我们的用户使用。在G套件中有没有办法在整个域范围内安装此触发器Google apps script 在GoogleSheets模板中使用DriveApp类,google-apps-script,google-workspace,Google Apps Script,Google Workspace,我已经在应用程序脚本中编写了一个函数,可以在活动电子表格旁边创建一个新文件夹,但当涉及到触发器时,我会崩溃 我认为,要创建文件夹,您需要使用可安装的触发器,而不是简单的触发器,但我正试图在Google Sheets模板文件中执行此操作,因此无法使用UI安装触发器 当我尝试以编程方式创建触发器时,我只得到一个错误消息:您没有调用ScriptApp.newTrigger的权限。这可能是因为文件是从模板创建的? 当从模板文件创建新的电子表格时,是否有一种方法可以自动安装该触发器,最好不要先请求用户授权
谢谢如果我理解正确,您希望用户能够:
- 基于现有模板创建新的电子表格
- 使用脚本中定义的函数(我猜是通过)创建文件夹,而无需请求用户授权
onOpen
,当电子表格打开时,它将创建一个名为Custom menu
的菜单:
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Custom menu')
.addItem('Install trigger', 'createTrigger')
.addToUi();
}
然后,如果用户访问该菜单并单击Install trigger
,则将运行以下功能,该功能将要求用户进行授权,并在获得授权后安装onEdit
触发器:
function createTrigger() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger('createFoldersOnEdit')
.forSpreadsheet(ss)
.onEdit()
.create();
}
最后,每次编辑电子表格时,安装的
onEdit
触发器将触发名为createFoldersOnEdit
的a函数。我对您的问题有点怀疑。当你谈到模板文件时,你指的是你创建的自定义模板,对吗?它是我提交给模板库的电子表格文件。嗯,我想可能是这样的。谢谢你的密码。因此,作为G套件管理员,我无法预先批准该文档?或者作为一个模板,用户只授权一次,然后发现该模板可以重用?每个不同的帐户(不包括服务帐户)都必须明确授权将对其文件进行更改的API,没有其他方法可以绕过它。也就是说,像我提供的UI菜单一样,只需点击2到3次就可以了。这是有道理的,但是模板呢?感觉就像一旦用户批准了一次模板,只要访问要求没有改变,就不需要再次批准。不过,我会考虑做这个菜单选项。感谢您的帮助。不幸的是,文件来自模板这一事实并没有改变这一点。好的,我也这么认为。谢谢你的帮助,我可能会考虑改用菜单选项。