创建和管理某人触发器 (GAS) 的最佳方式



我为一个人写了一些GAS代码,它需要一个触发器。

我创建了这一行,并要求该人调用它来设置他的触发器(因为它是他的电子表格(:

ScriptApp.newTrigger("myFunction").timeBased().everyDays(1).inTimezone("Australia/Brisbane").atHour(5).create()

但是,我看不到他的触发器。

为了查看触发器是否存在,我使用了:

Logger.log(ScriptApp.getProjectTriggers())

返回了一个空数组,所以看起来触发器消失了,但我在物理上看不到它......

因此,如果是客户,问他"请设置触发器"然后看不到它然后要求检查它是否存在并不酷。

为客户设置和管理触发器的最佳方式是什么?

编辑:如接受的答案中所述,似乎可以在仪表板中手动查看其他用户的触发器。


出于安全原因,您无法以编程方式/手动查看其他用户的触发器。

我创建了这一行,并要求该人调用它来设置他的触发器(因为它是他的电子表格(:

您必须显式创建一个菜单,以便用户可以单击它来创建触发器:
如果用户通过菜单选项设置触发器,则可以像这样将触发器的 id 设置为属性服务。

function createTrigger(){ //to be linked to a "Create Trigger" menu
// Creates an edit trigger for a spreadsheet identified by ID.
var tid = ScriptApp.newTrigger('myFunion')
    .forSpreadsheet('1234567890abcdefghijklmnopqc3')
    .onEdit()
    .create()
    .getUniqueId();
//set id of trigger in properties 
PropertiesService
    .getScriptProperties() //if you want public access to trigger(If not use getUserProperties)
    .setProperty(
        Session.getEffectiveUser().getEmail() || 
            ('user1 ' + Math.random().toFixed(3)),
        tid
    );
//Inform user: trigger created successfully.
SpreadsheetApp.getActive().toast('Trigger created successfully with id: ' + tid);
//@see https://script.google.com/home/triggers
}

要查看他的触发器,请打开编辑器并从"编辑"菜单中选择"当前项目触发器"。

在触发器页面上,点击"归我所有"过滤器上的"x"。然后,您应该看到项目的所有触发器,并知道它是否已设置。它不会告诉你谁拥有它,我不认为。

你不能从那里"管理"他的触发器,只是看到它们。没有办法弄乱其他人的触发器(一个备受争议的话题!(,但你可以更改函数的名称来破坏触发器。

最新更新