在Google表格模板中使用DriveApp类

我已经在Apps脚本中编写了一个函数,该函数在活动电子表格的旁边创建了一个新文件夹,但是当涉及到触发器时,我会陷入困境。

我收集到这些信息,以便能够创建需要使用可安装触发器而不是简单触发器的文件夹,但是我试图在Google表格模板文件中执行此操作,因此无法使用用户界面安装触发。

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

这将内置于G Suite中,只需要我们的用户使用。 G Suite中是否可以在全域范围内安装此触发器?

谢谢

gba30000 回答:在Google表格模板中使用DriveApp类

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

  • 基于现有模板创建新的电子表格。
  • 使用脚本中定义的功能(我想通过DriveApp.createFolder创建文件夹,而无需询问用户授权。

恐怕无法避免授权步骤,但是您可以通过使用简单的onOpen触发器在电子表格中创建一个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的函数。

本文链接:https://www.f2er.com/3081347.html

大家都在问