我正在谷歌电子表格上运行一个脚本,应该由来自 Zapier (www.zapier.com) 的 zap 触发 onChange() 事件(当在电子表格中插入新行时)。我可以在电子表格中看到正在创建的新信息,但未触发触发器。我已经用 onEdit() 事件进行了测试,但它不起作用。它不应该是基于时间的触发器。
有什么建议?
triggers google-sheets google-apps-script zapier gs-installable-triggers
我有一个时间触发的脚本,它定期从外部源检索内容并用它更新 Google 网站页面。根据此,该脚本会我的账户,这已充分评估,谷歌网站页面(通过手动编辑它测试)下运行。但是当我运行脚本时,我得到了
您无权执行该操作。
如果我可以手动编辑页面,为什么我在运行脚本时没有该权限?
这是(通用的)脚本函数:
function updatePage() {
var site = 'https://sites.google.com/a/mydomain.com/myhome/mypagegroup/mypage';
var pageName = '/mypagegroup/mypage';
var site = SitesApp.getSiteByUrl(site);
var page = site.getChildByName(pageName); //works fine
Logger.log('page: ' + page.getTitle()); //displays correct page title
var html = '<p>'; //in actual script, I get html from external source
Logger.log('html: ' + html);
page.setHtmlContent(html); //this is where the error is generated ("You do not have permission to perform that action")
};
Run Code Online (Sandbox Code Playgroud) 有没有办法从 Google Script 中的所有文档中获取(和更改/删除)所有触发器,就像我打开一样Script Editor -> Edit -> All your triggers?
更新:
我添加了一些测试触发器并尝试循环所有电子表格文件,正如Pierre-Marie Richard所说:
function getAllSpreadsheetTriggers()
{
var files = DriveApp.getFilesByType('application/vnd.google-apps.spreadsheet'),
spreadsheets = [],
triggers = [];
while(files.hasNext())
spreadsheets.push( SpreadsheetApp.openById(files.next().getId()) );
for (var i = 0; i < spreadsheets.length; i++)
{
triggers = ScriptApp.getUserTriggers( spreadsheets[i] );
Logger.log(triggers);
}
}
Run Code Online (Sandbox Code Playgroud)
但.getUserTriggers()总是返回一个空数组。我读了这个问题,最后一个答案是“我们决定不对这个问题采取行动。触发器总是属于一个特定的脚本,其他脚本无法访问。已经澄清了文档以明确这一点。”
原来做不到?
我需要每天运行 Google Apps 脚本三次:8:00、12:30、17:00。
这该怎么做?
我已经看过了Triggers,更具体地说Time driven:
小时计时器,但是Every hour,Every 2 hours,Every 4 hours未在此处进行调整
日定时器,但8am to 9am不是很精确,我更喜欢更精确的东西,而且 12:30 也是不可能的
特定时间,但随后YYYY-MM-DD HH:MM不适合每天运行
From calendar 触发器似乎也没有适应。
javascript triggers google-apps google-apps-script gs-installable-triggers