Google apps script 在GoogleSheets模板中使用DriveApp类

Google apps script 在GoogleSheets模板中使用DriveApp类,google-apps-script,google-workspace,Google Apps Script,Google Workspace,我已经在应用程序脚本中编写了一个函数,可以在活动电子表格旁边创建一个新文件夹,但当涉及到触发器时,我会崩溃 我认为,要创建文件夹,您需要使用可安装的触发器,而不是简单的触发器,但我正试图在Google Sheets模板文件中执行此操作,因此无法使用UI安装触发器 当我尝试以编程方式创建触发器时,我只得到一个错误消息:您没有调用ScriptApp.newTrigger的权限。这可能是因为文件是从模板创建的? 当从模板文件创建新的电子表格时,是否有一种方法可以自动安装该触发器,最好不要先请求用户授权

我已经在应用程序脚本中编写了一个函数,可以在活动电子表格旁边创建一个新文件夹,但当涉及到触发器时,我会崩溃

我认为,要创建文件夹,您需要使用可安装的触发器,而不是简单的触发器,但我正试图在Google Sheets模板文件中执行此操作,因此无法使用UI安装触发器

当我尝试以编程方式创建触发器时,我只得到一个错误消息:您没有调用ScriptApp.newTrigger的权限。这可能是因为文件是从模板创建的? 当从模板文件创建新的电子表格时,是否有一种方法可以自动安装该触发器,最好不要先请求用户授权

这将建立在G套件,将只需要由我们的用户使用。在G套件中有没有办法在整个域范围内安装此触发器


谢谢

如果我理解正确,您希望用户能够:

  • 基于现有模板创建新的电子表格
  • 使用脚本中定义的函数(我猜是通过)创建文件夹,而无需请求用户授权
恐怕无法避免授权步骤,但您可以通过在电子表格中创建一个带有简单触发器的UI菜单来减轻此过程的痛苦,该菜单将包含一个项目,单击该项目后,将安装所需的触发器

我在这里编写了一个小示例来展示工作流:

首先,创建一个简单的
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次就可以了。这是有道理的,但是模板呢?感觉就像一旦用户批准了一次模板,只要访问要求没有改变,就不需要再次批准。不过,我会考虑做这个菜单选项。感谢您的帮助。不幸的是,文件来自模板这一事实并没有改变这一点。好的,我也这么认为。谢谢你的帮助,我可能会考虑改用菜单选项。