【问题标题】:Apps Script: Get user input from HTML form and save them as global variablesApps 脚本:从 HTML 表单获取用户输入并将其保存为全局变量
【发布时间】:2021-11-25 02:45:32
【问题描述】:

下面的服务器端脚本接收来自 HTML 表单的用户输入,并将这些用户数据/输入添加到我的 Google 表格的最后一个可用行。它工作得很好。但现在我想将此脚本中的数组元素存储为全局变量,以便稍后在绑定到同一个 Google 表格的其他服务器端函数中重新使用它们。我对lastNameemailphone 中的值特别感兴趣。知道如何做到这一点吗?

非常感谢您的提示和帮助。

function AddUserInputToSheet(gender, firstName, lastName, age, email, phone) {
  var url = 'SHEET_URL';
  var ss = SpreadsheetApp.openByUrl(url);
  var webAppSheet = ss.getSheetByName("SHEET_NAME");

  webAppSheet.appendRow([gender, firstName, lastName, age, email, phone]);
}

【问题讨论】:

  • PropertiesService,将它们存储在电子表格中,将它们存储在文件中
  • @Cooper - 已经尝试理解和使用 PropertiesService 并最终在这里发布我的问题,因为我没有取得任何进展:(

标签: javascript google-apps-script


【解决方案1】:

您可以使用 Properties Service 的 Apps 脚本。

此服务允许脚本将字符串存储为范围内的键值对 一个脚本、一个脚本的用户或一个文档,其中 使用了编辑器插件。

在您的情况下,您可以选择 2 个选项。 脚本属性用户属性

两者的区别在于脚本属性的内容是共享给所有用户的,而用户属性只对脚本的当前用户可用,插件,或网络应用程序。

这里我创建了一个如何使用属性的示例。

function setProperties(lastName = "Test Last Name", email = "Test Email", phone = "Test Phone"){
  var scriptProperties = PropertiesService.getScriptProperties();
  scriptProperties.setProperties({'lastName': lastName, 'email': email, 'phone':phone})  
}

function readProperties(){
  var scriptProperties = PropertiesService.getScriptProperties();
  Logger.log(scriptProperties.getProperties());
}

这里我先运行readProperties()函数,结果是

然后我运行 'setProperties()' 并再次重新运行 readProperties() 函数:

我重新加载脚本页面并运行readProperties() 函数:

要将其添加到您的脚本中,您可以在AddUserInputToSheet() 中设置属性并在脚本中的任何位置调用它。

例子:

function AddUserInputToSheet(gender, firstName, lastName, age, email, phone) {
  var url = 'SHEET_URL';
  var ss = SpreadsheetApp.openByUrl(url);
  var webAppSheet = ss.getSheetByName("SHEET_NAME");
  webAppSheet.appendRow([gender, firstName, lastName, age, email, phone]);
  
  var scriptProperties = PropertiesService.getScriptProperties();
  scriptProperties.setProperties({'lastName': lastName, 'email': email, 'phone':phone})
}

function someFunction(){
  var scriptProperties = PropertiesService.getScriptProperties();
  var data = scriptProperties.getProperties();
  var lastName = data["lastName"];
  var email = data["email"];
  var phone = data["phone"];
  //some operations here
}

【讨论】:

    【解决方案2】:

    这是一个例子:

    function myfunk1() {
      PropertiesService.getScriptProperties().setProperty('Global1',JSON.stringify(SpreadsheetApp.getActive().getSheetByName('Sheet0').getDataRange().getDisplayValues()));
    }
    
    function myfunk2() {
      const vs = JSON.parse(PropertiesService.getScriptProperties().getProperty('Global1'))
      SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(1,1,vs.length,vs[0].length).setValues(vs);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-25
      • 2022-12-02
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多