- 您想要从 HTML 端创建新的电子表格。
- 您想要从 HTML 端将值放入创建的电子表格中。
- 在你的情况下,你不想把
writeData()
in createSpreadsheet()
。也就是说,您想要单独使用这两个功能。
如果我的理解是正确的,这个答案怎么样?请将此视为多个答案之一。
首先修改点如下。
修改点:
当您按如下方式运行脚本时,
google.script.run.createSpreadsheet(name);
google.script.run.writeData(data);
的功能writeData()
在函数之前运行createSpreadsheet()
完成了,因为google.script.run
通过异步进程工作。为了避免这种情况,在此示例脚本中,withSuccessHandler()
用来。
关于修改后的脚本,我介绍两种模式。请选择其中之一。
模式一:
在此模式中,文件 ID 从createSpreadsheet()
并使用文件 ID 将值放入创建的电子表格中。
Code.gs:Google Apps 脚本
function createSpreadsheet(name){
var ss = SpreadsheetApp.create(name);
var ssID = ss.getId();
return ssID;
}
function writeData(id, data){
var ss = SpreadsheetApp.openById(id);
var s = ss.getSheets()[0];
s.getRange('A1').setValue(data);
}
index.html:HTML 和 Javascript
<script>
function parse_to_backend(){
var name = document.getElementById("user_name").value;
var data = document.getElementById("user_data").value;
google.script.run.withSuccessHandler((id) => {
google.script.run.writeData(id, data);
}).createSpreadsheet(name);
};
</script>
模式2:
在此模式中,文件 ID 由 PropertiesService 保存,并使用从 PropertiesService 获取的文件 ID 将值放入创建的电子表格中。在本例中,文件 ID 保存到 PropertiesService。因此,使用从 PropertiesService 获取的文件 ID,创建的电子表格也可以由 Javascript 的其他操作使用。
Code.gs:Google Apps 脚本
function createSpreadsheet(name){
var ss = SpreadsheetApp.create(name);
var ssID = ss.getId();
PropertiesService.getScriptProperties().setProperty("ssID", ssID);
}
function writeData(data){
var id = PropertiesService.getScriptProperties().getProperty("ssID");
var ss = SpreadsheetApp.openById(id);
var s = ss.getSheets()[0];
s.getRange('A1').setValue(data);
}
index.html:HTML 和 Javascript
<script>
function parse_to_backend(){
var name = document.getElementById("user_name").value;
var data = document.getElementById("user_data").value;
google.script.run.withSuccessHandler(() => {
google.script.run.writeData(data);
}).createSpreadsheet(name);
};
</script>
参考:
- 类 google.script.run https://developers.google.com/apps-script/guides/html/reference/run
- withSuccessHandler() https://developers.google.com/apps-script/guides/html/reference/run#withSuccessHandler(Function)
- 类属性服务 https://developers.google.com/apps-script/reference/properties/properties-service
如果我误解了您的问题并且这个答案不是您想要的,我深表歉意。