Google apps script 调用SpreadsheetApp.getUi().alert();通过google.script.run停止服务器功能运行
大家好,提前谢谢 我用一个按钮在谷歌电子表格中创建了一个侧面板。单击该按钮将运行服务器功能。此函数用于显示alertbox并将文本插入特定单元格 工作示例: 现在是棘手的部分: 我在另一张表格中使用了此代码,我无法共享,因为它包含机密数据。在本表中,该函数仅在我删除或//停用带有警报调用的行时运行 我知道发现这样的错误有点难,但也许有人知道它可能是什么 代码.GSGoogle apps script 调用SpreadsheetApp.getUi().alert();通过google.script.run停止服务器功能运行,google-apps-script,Google Apps Script,大家好,提前谢谢 我用一个按钮在谷歌电子表格中创建了一个侧面板。单击该按钮将运行服务器功能。此函数用于显示alertbox并将文本插入特定单元格 工作示例: 现在是棘手的部分: 我在另一张表格中使用了此代码,我无法共享,因为它包含机密数据。在本表中,该函数仅在我删除或//停用带有警报调用的行时运行 我知道发现这样的错误有点难,但也许有人知道它可能是什么 代码.GS function onOpen() { // Add a custom menu to the spreadsheet. S
function onOpen() {
// Add a custom menu to the spreadsheet.
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Custom Menu')
.addItem('myToDoPanelLabel', 'showTestPanel')
.addToUi();
}
function insert(value) {
SpreadsheetApp.getUi().alert("Message"); //with this line it only works in test sheet but not in the original sheet
var thisID="1Mv-0YRSJJpwSaRh_xAeZDtVqL-P-e5nS80fUJIq_CJ4";
var ss = SpreadsheetApp.openById(thisID).getSheetByName("Tab1");
ss.getRange(1,2).setValue("New Txt");
}
function showTestPanel() {
var template = HtmlService.createTemplateFromFile('panel');
var htmlOutput = template.evaluate()
.setTitle('ToDoPanel');
SpreadsheetApp.getUi().showSidebar(htmlOutput);
}
PANEL.HTML
<script>
window.mark = function() {
google.script.run.insert();
};
</script>
<button onclick='mark()'>click me</button>
编辑:问题的核心是没有出现对话框!通过警报调用,它将停止代码。等待用户响应时,可以在Scrip Logging timeout中看到超时。使用下面建议的解决方案,它将执行,但仍不会显示自定义对话框。
这是权限问题吗?嗯,阻止服务器执行。引述:
在用户编辑器中打开带有给定消息和“确定”按钮的对话框。此方法在对话框打开时挂起服务器端脚本。在用户解除对话框后,脚本将继续,但Jdbc连接和LockService锁不会在整个暂停期间保持
如中所示,您可以使用自定义对话框:
对话框打开时,自定义对话框不会挂起服务器端脚本。客户端组件可以使用用于HTML服务接口的google.script API或用于UI服务接口的服务器处理程序对服务器端脚本进行异步调用
因此,创建自定义对话框可能会解决您的问题。感谢Adelin的提示!这并不能解决整个问题,而是部分问题,让我更接近问题所在。尝试您的建议时,自定义对话框没有显示,但函数的其余部分已执行。所以我怀疑这与显示对话框的权限有关,我还没有发现如何授予它们,因为你不能从编辑器中调用对话框。。。