在Apps Script中,虽然一切正常显示,但是获取范围值时却只能得到“Loading...”信息。 这个问题是因为脚本在尝试更新UI时阻塞了UI线程。解决方法是在脚本中使用Google的服务器和客户端库来进行异步操作。具体示例代码如下:
function doGet() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom') .addItem('Load data', 'loadData') .addToUi(); return HtmlService.createHtmlOutputFromFile('Page') .setTitle('Custom Page'); }
function getValues() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); return sheet.getDataRange().getValues(); }
function loadData() { google.script.run.withSuccessHandler(displayData).withFailureHandler(onFailure).getValues(); }
function displayData(values) { var table = HtmlService.createTemplateFromFile('Table'); table.values = values; var html = table.evaluate(); html.setTitle('Custom Data'); SpreadsheetApp.getUi().showModelessDialog(html, 'Custom Data'); }
function onFailure(error) { console.error(error.message); }
上一篇:AppsScript - 在Google Sheets中复制“将图像放入选定的单元格”
下一篇:AppsScript->errorloadingiframeformovermainpageduetobrowserupdate