为什么我的 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() 函数。相反,您可以手动添加触发器。这将解决问题(在这种情况下,您可以为该函数使用任何名称)。
- Go to Triggers
- Click "Add trigger"
- Configure the trigger as like the image file and click "Save"
这将自动调用必要的身份验证范围。
在 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() 函数。相反,您可以手动添加触发器。这将解决问题(在这种情况下,您可以为该函数使用任何名称)。
- Go to Triggers
- Click "Add trigger"
- Configure the trigger as like the image file and click "Save"
这将自动调用必要的身份验证范围。