在用户单击是/否之前,方法返回未定义。根据Google应用程序脚本,当对话框显示时,应冻结服务器进程。但在我的测试中,在用户单击是/否之前返回该值。
function getValues() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var okToInsert = true;
if (sheet.getName() !== "xxx") {
var ui = SpreadsheetApp.getUi();
var alert = ui.alert('Confirm',
'Your active sheet is not "xxx". Continue to insert?',
ui.ButtonSet.YES_NO);
if(alert == ui.Button.NO){
okToInsert = false;
}
}
return {
"okToInsert": okToInsert
};
}
这是我的前端js:
google.script.run
.withSuccessHandler(
function(selectedRange, scope) {
console.log(">>> selectedRange: " + selectedRange);
})
.withFailureHandler(
function(msg, scope) {
})
.withUserObject($scope)
.getValues();
这是我启用侧边栏的方式:
var ui = HtmlService.createTemplateFromFile('sidebar').evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('this is title');
SpreadsheetApp.getUi().showSidebar(ui);
我在这里创建了一个名为“Dialog return test”的示例侧边栏加载项。 https://docs.google.com/spreadsheets/d/1eHwjHKuBIDw2WOTRU5CZAu9m9V-9mXimFyMlGXbPl-U/edit?usp=sharing
答案 0 :(得分:1)
您的代码非常适合我:
我得到了对话提示,并且定义了返回没有错误。问题可能出在您的代码的另一部分,或者可能是脚本文件本身。我建议在新的工作表文件中尝试新脚本,并尝试从那里缩小问题范围。