我知道我可以使用Google API可执行文件让本地脚本触发Google Apps Script。我想知道我是否可以通过消除应用程序脚本来优化它。有什么方法可以使消息框仅使用本地脚本显示在工作表中?注意:简单地将文本粘贴到工作表中是行不通的。
例如:人员 A 在浏览器中打开了工作表。人员 B 通过命令行提交新数据。这将触发工作表中人员 A 的消息框,显示"人员 B 提交了新数据"。
创建一个简单的对话框服务器端:
function simpleDialog() {
let html='<h1>Simple Dialog Title</h><form><br /><input type="text" id="text1" name="text1" /><br /><input type="button" value="Save" onClick="google.script.run.saveData(this.parentNode);" /><br /><input type="button" value="Close" onclick="google.script.host.close();" /></form>';
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), "Simple Dialog");
}
function saveData(obj) {
const ss=SpreadsheetApp.getActive();
const sh=ss.getActiveSheet();
sh.getRange(sh.getLastRow()+1,1).setValue(obj.text1);
}
您可以使用 Google Apps 脚本创建可在终端上使用的 API:
// Gets data from GET Requests
function doGet(e){
try{
var result;
var data = e.parameters.data;
var ss = SpreadsheetApp.getActive().getSheetByName("Data");
ss.appendRow(data);
result = { "Result" : "ok" , "Message" : "The data was submitted" };
}catch(e){
result = { "Result" : "failed" , "Message" : "An error has ocurred: " +e };
}
return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
}
然后,您需要将该代码发布为 Web 应用程序。
发布该脚本时,您可以在终端中执行此操作:
curl -X GET -L https://script.google.com/macros/s/AKfycbztjXtmKGK6nSZ2jyqwKvvFWrsT0qEmyxKvr15SjFCVQzy83TQ/exec?data=test
你得到了结果:
{"Result":"ok","Message":"The data was submitted"}
请看这个文档: https://docs.google.com/spreadsheets/d/1aP7w9mjblahPI3q8nHzqlVaikmzSR4Nn4q5Bd4ehbmU/edit#gid=0