时间创建的触发器不会被触发。应用脚本

问题描述 投票:0回答:1

我正在谷歌表格中创建一个插件。我已经快完成了,我唯一需要做的就是这个触发器。当我单击侧边栏的按钮时,触发器要么被创建然后被禁用,要么被创建但不被触发。但是当我通过编辑器运行代码时,一切正常。有谁知道为什么会发生这种情况?

为了测试触发器,我使用以下代码:

代码.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”,并且应该控制台“正在工作”。我只是使用该代码来测试触发器。

javascript google-sheets triggers
1个回答
0
投票

您的意图可能是在

Sidebar.HTML
中添加一些代码来创建触发器,但
<script>
...
</script>
标签中唯一的内容是以 // Add a click event listener 开头的
comment
。在
document.getElementById
之前插入换行符,使代码被解释为代码而不是注释。

请参阅 JavaScript 基础知识

© www.soinside.com 2019 - 2024. All rights reserved.