我有一个脚本可以从CMS中提取错误报告数据,创建月度存档表并将其作为新标签附加到另一个Google表格。新工作簿的工作表名称是' Sheet1'并且创建的新标签是三月,四月,五月等。我需要在每个月的第一天添加新工作表时建议我们的团队(我知道每个人都知道这是本月的第一个,但要让他们记住看看新表非常难!)。
我遇到了这个脚本:How do I set up notifications for when a new sheet is added in Google Sheets?
我已将工作表名称行更改为; var sheet = ss.getSheetByName(' Sheet1');和电子邮件地址。我手动运行时脚本有效。单元格A1每次增加一,我收到一封电子邮件。但是,当我在CMS错误报告上刷新脚本时,它会创建一个包含月份名称的新标签,但不会触发“通知”。功能。我只有一个触发器:notify / from spreadsheet / On change。
我觉得我一定错过了表单上的内容,但无法看到它是什么。
答案 0 :(得分:1)
触发器由用户操作触发。脚本活动不会触发它们。您可以使用以下测试脚本查看此内容,其中“doSomething”插入工作表,displayEvent在浏览器消息中显示事件。为displayEvent设置onChange触发器:手动插入工作表会触发它,但不会运行“doSomething”。
function doSomething() { SpreadsheetApp.getActiveSpreadsheet().insertSheet(); }
function displayEvent(e) { Browser.msgBox(JSON.stringify(e)); }
作为解决方法,将脚本设置为以某个时间间隔运行,而不是通过触发器(例如,15分钟)运行。顺便说一下,这个数字可以存储在脚本属性中,而不是使用单元格A1来存储工作表数量。方法如下:
function notify() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var scriptProperties = PropertiesService.getScriptProperties();
var numSheets = scriptProperties.getProperty('Sheets');
if (numSheets > 0 && ss.getSheets().length > numSheets) {
MailApp.sendMail('someone', 'subject', 'new sheet')
}
scriptProperties.setProperty('Sheets', ss.getSheets().length);
}