【问题标题】:Unable to read parameters from GAS web app无法从 GAS Web 应用程序读取参数
【发布时间】:2019-12-03 11:00:59
【问题描述】:

我正在组织一个活动,每位参加者都有一张唯一的条形码门票。条形码是一个 QR 码,链接到 GAS Web 应用程序,带有用于在私人电子表格中查找的 URL 参数(姓名、票证代码和出席日期)。让我们调用参数abc

我遇到的问题是我的doGet(e) 函数没有在 url 中找到参数,因此所有电子表格检查都失败了,即使数据在工作表中也是如此。我的相关代码如下:

function doGet(e) {
  var ss = SpreadsheetApp.openById("id");
  var sheet = ss.getSheets()[1];

  var name = e.parameter.a[0];
  var ticketID = e.parameter.b[0];
  var attendanceDate = e.parameter.c[0];

  // other code

  var attendeeNames = sheet.getRange("A:A1").getValues();

  for (var i = 0; i < attendeeNames.length; i++) {
    if (attendeeNames[i] == name) {
      // ticket ID and date checks go here but name is failing
    } 
  } 
} 

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    答案:

    e.parameter 应替换为 e.parameters

    说明:

    在 Apps Script Web Apps 中有两种从事件对象获取参数的方法 - e.parametere.parameters。根据文档:

    e.参数:

    与请求参数对应的键/值对对象。具有多个值的参数只返回第一个值。

    {"name": "alice", "n": "1"}
    

    e.参数:

    一个类似于 e.parameter 的对象,但每个键都有一个值数组

    {"name": ["alice"], "n": ["1", "2"]}
    

    只有 e.parameters 使用数组作为键值对的值,因此当您调用值时

    var name = e.parameter.a[0];
    var ticketID = e.parameter.b[0];
    var attendanceDate = e.parameter.c[0];
    

    您将返回 null。

    修复:

    您的代码还需要解决一些其他问题。为了得到一列的范围,你需要使用.getRange('A1:A'),而不是.getRange('A:A1;)

    替换:

    var name = e.parameter.a[0];
    var ticketID = e.parameter.b[0];
    var attendanceDate = e.parameter.c[0];
    

    与:

    var name = e.parameters.a[0];
    var ticketID = e.parameters.b[0];
    var attendanceDate = e.parameters.c[0];
    

    或者,如果您只有abc 的一个参数,您可以使用:

    var name = e.parameter.a;
    var ticketID = e.parameter.b;
    var attendanceDate = e.parameter.c;
    

    另外,替换:

    var attendeeNames = sheet.getRange("A:A1").getValues();
    

    与:

    var attendeeNames = sheet.getRange("A1:A").getValues();
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2013-12-22
      • 2018-04-21
      相关资源
      最近更新 更多