如何将HTML表单数据传递给apps脚本变量?

时间:2014-12-23 20:45:07

标签: arrays google-apps-script parameter-passing

我很难将变量分配给我在HTML表单中收集的数据,以便在Apps脚本中使用。我当前的代码从HTML中收集值,并将数据附加到Google表格中的一行。我还想做的是将每个表单值分配给变量,以便我可以发送自动电子邮件等...

到目前为止我所知道的......

HTML和脚本有效,它从表单中收集值并将它们发送到code.gs

函数addData在传输值时按预期启动

表单数据会附加到Google表格

Code.gs记录器和#34;确认收到的数据"和"收到的数据"记录传输的值

尝试分配var columnA时出现执行错误:执行失败:TypeError:无法读取属性" 0"来自undefined。

以下是来自HTML和gs文件的日志以及我试图开始工作的Code.gs脚本......

非常感谢你提前...

的console.log:

[" 20141223"," CraneJe960303"," Jeff"," Crane"," 1231231234",& #34; jkhj@jkhjk.com"," 123 Any St Here,AR 11111"," 11111"," 19960303"," 11 - 完成大三学年" 16-获得学士学位"," L-Leadership",37。**** 125,-85。**** 217,22 ]

Code.js Logger.log:

Logger.log([收到数据:20141223,CraneJe960303,Jeff,Crane,1231231234,jkhj @ jkhjk.com,123 Any St Here,AR 11111,11111,19960303,11-完成大三,16年获得学士学位,L-Leadership,37。**** 125,-85。**** 217,22,[]])[0秒]

function addData(data) {
  var ss = SpreadsheetApp.openById('1g5N1******************doOnE').getSheetByName('Sheet1');
  ss.appendRow(data);
  Logger.log('Confirm received data: ' + data);

  Logger.log('Received data: ' + data);  
var columnA = data.values[0];
  Logger.log('Start data value: ' + columnA);
var columnB = data.values[1];
var etc....

2 个答案:

答案 0 :(得分:1)

您无法读取data.values [0]等值。无论何时将表单值传递给GAS,函数参数都不具有'values'之类的属性。那些'data'参数将充当json数据。您可以通过表单中提供的参数名称访问它,即<input type='text' name='user' value=''>。因此,如果将此值传递给GAS,则可以像data['user']一样访问此值。

或者您也可以通过以下方式访问它,

var array = [];
for(var i in data) {  // data is a function parameter you have used in your GAS function, addData(data)
  arr.push(data[i]);
}

完成此操作后, 您可以使用此数组array[]来分配列,即

var columnA = arr[0];
Logger.log('Start data value: ' + columnA);
var columnB = arr[1];
...
...

答案 1 :(得分:1)

变量data看起来像是一个数组。 通过设置点运算符和单词&#34;值&#34;在数据末尾,您尝试在名为&#34; data&#34;的数组上调用方法。但是对于数组名称没有JavaScript方法&#34;值&#34;。有.valueOf方法。

方法:

  • concat()连接两个或多个数组,并返回已连接的数组 阵列
  • indexOf()在数组中搜索元素并返回其位置
  • join()将数组的所有元素连接成字符串
  • lastIndexOf()从数组中搜索元素,从结尾开始, 并返回其位置
  • pop()删除数组的最后一个元素,并返回该元素
  • push()将新元素添加到数组的末尾,并返回新元素 长度
  • reverse()反转数组中元素的顺序
  • shift()移除数组的第一个元素,并返回该元素 元件
  • slice()选择数组的一部分,并返回新数组
  • sort()对数组的元素进行排序
  • splice()添加/删除数组中的元素
  • toString()将数组转换为字符串,并返回结果
  • unshift()将新元素添加到数组的开头,然后返回 新长度
  • valueOf()返回数组的原始值

属性

  • constructor返回创建Array对象的函数 原型
  • length设置或返回数组中元素的数量
  • prototype允许您向Array对象添加属性和方法

如果要在名为data的数组中索引第一个值,请使用:

data[0]

换句话说:

var columnA = data[0];

如果它不是数组,而只是一个字符串,则可能需要将其转换为数组。