查询Google脚本中的列

时间:2013-08-13 12:06:17

标签: google-apps-script google-sheets

我已经设置了一个脚本来复制和处理从表单生成的电子表格。

我收集这样的回复:

  var responses = formResponses.getDataRange().getValues();

然后通过数组索引访问各列,例如:

  var timestamp = row[0];
  var agentName = row[1];

现在,虽然这有效。对表单的任何更改都可能最终搞砸了整个事情,数组索引也会发生变化。

我可以改为按列名查询吗?

2 个答案:

答案 0 :(得分:1)

如果通过onFormSubmit event访问它是不可行的,因为您需要访问提交后的数据,我已经创建了允许您通过列名访问的代码。

function getDataFields(workingRow){
    //header is row 1 -- not row 0
    var headerRow = 1;
    var headerRowValues = getRowRange(headerRow).getValues();
    var workingRowValues = getRowRange(workingRow).getValues();
    var dataFields = [];

    for (var colNum in headerRowValues[0]){
        dataFields[headerRowValues[0][colNum]] = workingRowValues[0][colNum];   
    }
    dataFields['Working Row'] = workingRow;

  return dataFields;  
}

function getRowRange(workingRow){
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastColumn = activeSheet.getLastColumn();
  return activeSheet.getRange(workingRow, 1, 1, lastColumn);
}

然后,您可以使用dataFields ['列名称']来访问该特定行的数据。

答案 1 :(得分:0)

如果您使用onFormSubmit event,则可以按其命名值访问所有表单值,the documentation on Spreadsheet Form Submit Events中对此进行了解释,因此您不会再遇到此问题...