我有一个脚本,它将向我们的服务器运行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
}
我无法将";进口订单"按钮到脚本。
正如Cooper在上面的评论中所说,它不是一个独立的函数:
示例用法:
google.script.run.withSuccessHandler(onSuccess).importcogs();
这将反过来运行importcogs
函数,并在函数成功完成时触发onSuccess
函数。onSuccess
的参数将是名为importcogs
的函数的返回(如果有(。