我已经设置了一个脚本来复制和处理从表单生成的电子表格。
我收集这样的回复:
var responses = formResponses.getDataRange().getValues();
然后通过数组索引访问各列,例如:
var timestamp = row[0];
var agentName = row[1];
现在,虽然这有效。对表单的任何更改都可能最终搞砸了整个事情,数组索引也会发生变化。
我可以改为按列名查询吗?
答案 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中对此进行了解释,因此您不会再遇到此问题...