我正在谷歌表格中创建一个插件。我已经快完成了,我唯一需要做的就是这个触发器。当我单击侧边栏的按钮时,触发器要么被创建然后被禁用,要么被创建但不被触发。但是当我通过编辑器运行代码时,一切正常。有谁知道为什么会发生这种情况?
为了测试触发器,我使用以下代码:
代码.GS
let SIDEBAR_TITLE = 'Try trigger';
function onOpen(e) {
SpreadsheetApp.getUi() .createAddonMenu() .addItem('Try trigger', 'showSidebar') .addToUi();
}
function onInstall(e) {
onOpen(e);
}
function showSidebar() {
let ui = HtmlService.createTemplateFromFile('Sidebar') .evaluate() .setTitle(SIDEBAR_TITLE) .setSandboxMode(HtmlService.SandboxMode.IFRAME); SpreadsheetApp.getUi().showSidebar(ui);
}
function testingTrigger() {
let delayMinutes = 1;
ScriptApp.newTrigger('createdTrigger').timeBased().after(delayMinutes * 60 * 1000).create()
}
function createdTrigger(){
console.log('Is working...');
}
Sidebar.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
</head>
<body>
<div>
<button id="runTrigger">Try triggers</button>
</div>
<script> // Add a click event listener to the button document.getElementById("runTrigger").addEventListener("click", function() { google.script.run.testingTrigger(); // Replace with your function name });
</script>
</body>
使用此代码,如果我单击侧边栏的按钮来执行它,它会被创建但从未触发。在官方代码中,它也被禁用。但同样,当我通过编辑器运行它时,它工作正常。
所以它应该被创建(确实如此),但一分钟过去后,它应该执行函数“createdTrigger”,并且应该控制台“正在工作”。我只是使用该代码来测试触发器。
您的意图可能是在
Sidebar.HTML
中添加一些代码来创建触发器,但 <script>
...</script>
标签中唯一的内容是以 // Add a click event listener
开头的 comment。在
document.getElementById
之前插入换行符,使代码被解释为代码而不是注释。
请参阅 JavaScript 基础知识。