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

时间:2019-06-03 09:29:43

标签: google-apps-script google-sheets triggers

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

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

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

但是,我看不到他的扳机。

要查看我是否使用了触发器,

Logger.log(ScriptApp.getProjectTriggers())

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

因此,如果是客户,询问他的“请设置您的触发器”然后看不到它,然后要求检查它是否存在是不明智的。

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

2 个答案:

答案 0 :(得分:2)

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


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

  

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

您必须显式创建一个菜单,以便用户可以单击它来创建触发器:
如果用户通过菜单选项设置触发器,则可以将触发器的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
}

答案 1 :(得分:2)

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

在触发器页面上,单击“我拥有的”过滤器上的“ x”。然后,您可以查看该项目的所有触发器,并知道它是否已设置。我不认为它不会告诉您拥有它的人。

您不能从那里“管理”他的触发器,而只能看到它们。没有办法与其他人的触发器搞混(这是一个颇受争议的话题!),但是您可以更改函数名称以破坏触发器。