首页 > 解决方案 > 创建和管理某人的触发器 (GAS) 的最佳方式

问题描述

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

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

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

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

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

Logger.log(ScriptApp.getProjectTriggers())

它返回了一个空数组,所以看起来触发器不见了,但我没有看到它物理...

所以,如果是客户,问他“请设置你的触发器”然后看不到它然后要求检查它是否在那里是不酷的。

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

标签: google-apps-scriptgoogle-sheetstriggers

解决方案


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


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

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

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

推荐阅读