HTML-服务页面调用带有对话框的服务器端Apps脚本函数

HTML-service pages to call server-side Apps Script functions with dialog box

我尝试遵循 Client-to-Server Communication on Google Scripts, using unlike in the model, a modal dialog 的模型。

型号代码:

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

function doSomething() {
  Logger.log('I was called!');
}

型号HTML:

<script>
  google.script.run.doSomething();
</script>

我的代码:

function openDialog() {
  var html = HtmlService.createHtmlOutputFromFile('Index')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
  SpreadsheetApp.getUi()
      .showModalDialog(html, 'My Dialog');
}

function doSomething() {
  Logger.log('I was called!');
}

我的HTML和模特HTML一样。

运行 然而,此脚本并未按预期调用记录器。我做错了吗?

这已被报告为 Issue 5177,请为其加注星标以进行更新并引起对问题的关注。

有些情况下我们不应该期望 Logger 运行,例如当使用基于时间的触发器功能时,因为执行实例和调试器实例之间没有关联来记录日志。

然而,这里不是这种情况。我们应该有能力在这里使用记录器,但它不可靠。日志 do 出现,有时 :

由于这种行为,我使用 BetterLog library to record logs to a spreadsheet when debugging. (You can even invoke it via google.script.run to log to the spreadsheet from within your client-side JavaScript. See more about that in How do I run Server-side functions using HtmlService。)