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 に答える