我有一个脚本,它将向我们的服务器运行一个HTTP请求,并带来最新的订单。
我们希望能够在请求时运行脚本,但也希望能够将其安装为不同商店的不同工作表的附件。
应用程序的前端由这个html生成。
<link href="https://ssl.gstatic.com/docs/script/css/add-ons.css"
rel="stylesheet">
<div class="sidebar">
<div class="block form-group">
<button class="blue" id="load_orders">Import Order Data</button>
</div>
<div id='orders'></div>
</div>
<script>
$(function onSuccess(load_orders) {
});
withSuccessHandler(onSuccess).importcogs();
});
</script>然后,在.gs上,我有一个脚本来显示应用程序(在部署它之前)和导入命令脚本
function onInstall() {
onOpen();
}
function onOpen() {
SpreadsheetApp.getUi()
.createAddonMenu() // Add a new option in the Google Docs Add-ons Menu
.addItem("Import Order Data", "showSidebar")
.addToUi(); // Run the showSidebar function when someone clicks the menu
}
function showSidebar() {
var html = HtmlService.createTemplateFromFile("Front")
.evaluate()
.setTitle("Import Order - Search"); // The title shows in the sidebar
SpreadsheetApp.getUi().showSidebar(html);
}
function importcogs() {
Logger.log("import begin");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var urlsheet = ss.getSheetByName("GetInfo");
var request = urlsheet.getRange(5,2).getValue();
Logger.log(request);
var response = UrlFetchApp.fetch(request);
Logger.log("download data finish");
Logger.log(response.getContentText());
var sheet = ss.getSheetByName("Data");
var obj = JSON.parse(response);
let vs = obj.data.map(o => Object.values(o));//data
vs.unshift(Object.keys(obj.data[0]));//add header
sheet.getRange(1,1,vs.length, vs[0].length).setValues(vs);//output to spreadsheet
} 由于某些原因,我无法将“导入订单”按钮链接到脚本。
发布于 2022-01-20 13:42:45
正如库珀在上述评论中所说的,这不是一个独立的职能:
样本使用情况:
google.script.run.withSuccessHandler(onSuccess).importcogs();这将作为回报,运行importcogs函数,并在该函数成功完成时触发onSuccess函数。onSuccess的参数将是名为importcogs的函数的返回(如果有)。
https://stackoverflow.com/questions/70760338
复制相似问题