为什么我的 google 带有 onEdit 触发器的应用程序脚本没有调用模态对话框 (html)?

Why is my google apps script with an onEdit trigger not invoking a modal dialog (html)?

google sheet 中,当用户编辑特定单元格(我的测试表中的 D4)时,我试图打开一个 html 对话框。下面的脚本和 html 文件的内容。 onEdit 触发器正在工作并且正在调用应打开模式对话框的函数,但 html 对话框不会打开。但是,如果我只是 运行 对话框函数 (OpenMyHtmlDialog),它就会打开。

我不是程序员,我主要是把东西抄在一起然后试着理解它...

如有任何想法或提示,我们将不胜感激。

脚本文件如下所示:

function onEdit(e) {
  const specificSheet = "OpenHtmlDialogOnTrigger"   // for example
  const specificCell = "D4"       // for example

  let sheetCheck = (e.range.getSheet().getName() == specificSheet)
  let cellCheck = (e.range.getA1Notation() == specificCell)

  if (!(sheetCheck && cellCheck)) {
    return
  }
  else {
    OpenMyHtmlDialog();
  }
}

function OpenMyHtmlDialog() {
  // just to check if function is actually called
  SpreadsheetApp.getUi().alert("Function was called.");
  //Open HTML dialog
  var htmlDlg = HtmlService.createHtmlOutputFromFile('HTML_myHtmlDialog')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .setWidth(200)
      .setHeight(150);
  SpreadsheetApp.getUi()
      .showModalDialog(htmlDlg, 'A Title Goes Here');
};

html 文件如下:

<select name="nameYouWant">
  <option value="something">Text</option>
  <option value="anything">Drop Down Selection</option>
</select>

<hr/>
<ul>
  <li>This is a list.</li>
  <li>This is line two.</li>

</ul>

<button onmouseup="closeDia()">Close</button>

<script>
  window.closeDia = function() {
    google.script.host.close();
  };
</script>

你的代码没问题。

问题出在认证范围内。由于这个原因,我通常避免使用 onEdit() 函数。相反,您可以手动添加触发器。这将解决问题(在这种情况下,您可以为该函数使用任何名称)。

  1. Go to Triggers
  2. Click "Add trigger"
  3. Configure the trigger as like the image file and click "Save"

这将自动调用必要的身份验证范围。