0

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

我收集这样的回复:

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

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

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

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

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

4

2 回答 2

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['Column Name'] 访问该特定行的数据。

于 2013-08-13T15:04:51.500 回答
0

如果您使用onFormSubmit event您可以通过其命名值访问所有表单值,这在电子表格表单提交事件的文档中进行了解释,因此您将不再遇到此问题...

于 2013-08-13T12:31:06.390 回答