gpt4 book ai didi

javascript - 在两个函数之间传递变量

转载 作者:行者123 更新时间:2023-11-30 09:14:51 25 4
gpt4 key购买 nike

我想编写一个应用程序,在我的 google-drive 中使用 google-app 脚本的用户输入数据生成电子表格。

为此,我有几个 JavaScript 函数要一个接一个地执行:

function createSpreadsheet(name){

var ss=SpreadsheetApp.create(name);
var ssID = ss.getID()

}

function writeData(data){

var s = ss.getSheets()[0];
s.getRange('A1').setValue(data);

}

前端脚本通过以下方式调用:

 <script>

function parse_to_backend(){

var name = document.getElementById("user_name").value;
var data = document.getElementById("user_data").value;

google.script.run.createSpreadsheet(name);
google.script.run.writeData(data);

};

</script>

我如何实现 writeData 知道 ssID 电子表格的 ID (我无法使用 google.script.run 将值返回到前端并将其作为参数解析)

最佳答案

  • 您想从 HTML 端创建新的电子表格。
  • 您想从 HTML 端将值放入创建的电子表格。
  • 在您的情况下,您不想将 writeData() 放入 createSpreadsheet() 中。也就是说,您想单独使用这两个功能。

如果我的理解是正确的,这个答案怎么样?请将此视为几个答案之一。

首先,修改点如下。

修改点:

当您按如下方式运行脚本时,

google.script.run.createSpreadsheet(name);
google.script.run.writeData(data);

writeData() 函数在 createSpreadsheet() 函数完成之前运行,因为 google.script.run 由异步过程。为了避免这种情况,在此示例脚本中,使用了 withSuccessHandler()

关于修改后的脚本,我介绍2种模式。请选择其中一项。

模式一:

在此模式中,文件 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>

模式二:

在此模式中,文件 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>

引用资料:

如果我误解了您的问题并且这个答案不是您想要的,我深表歉意。

关于javascript - 在两个函数之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55806953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com