システムの一部を開発しており、フォームの回答をスプレッドシートに送信し、
その回答データをもとにDBもどきを作るということをやっております。
そこで、問題となっているのは、フォーム回答がスプレッドシートに入っているデータの最下行にこないということです。
フォーム回答用のスプレッドシートは、
・タイムスタンプ順
・スクリプトや手入力でのフォーム回答のない行へのデータ入力は行っていない
という状況です。
なお、問題は常に発生するというわけでもありません。
同じ状況である、経験したことがある、解決したことがあるという方は、ご助言賜りたく存じます。
よろしくお願いします。
<追記>
まず、。フォームの回答は、スクリプトを使わずに回答先の変更によってスプレッドシートに出力させています。
その上で、回答が出力されたAシートにおいて、回答データをもとに幾つかデータを追加しています。
さらに、任意のタイミング(メニューバーにボタン作成)でAシートのデータをB,C・・・シートに必要な分反映しているという感じです。
例)
「Aシート:フォーム回答先」
回答データ:身長, 体重
追加データ:BMI
この例をもとにスクリプトを書くとこのような形になっております。
Aシートでのデータ作成は、フォームの回答を受け付けたタイミングで行っています。
他シートへのデータ反映は、Aシートのデータを配列で取得し、他シートに書き込んでいます。
今回の問題とは直接の関係がないと思われますので、省略しております。
Javascript
1function getDatas(){ 2 var sheet 3 = SpreadsheetApp 4 .openById("ID") 5 .getSheetByName("A"); 6 var values 7 = sheet 8 .getDataRange() 9 .getValues(); 10 var lastRow 11 = sheet 12 .getLastRow(); 13 14 //A列:身長 B列:体重 15 //C列:BMI 16 values[lastRow][2] 17 = values[lastRow][1] / ( (values[lastRow][0]/100) * (values[lastRow][0]/100) ); 18 19 sheet 20 .getDataRange() 21 .setValues(values); 22} 23 24function setTrigger(){ 25 var form 26 = FormApp 27 .openById("ID"); 28 29 ScriptApp 30 .newTrigger("getDatas") 31 .forForm(form) 32 .onFormSubmit() 33 .create(); 34}
症状が完全に解決はしていないものの、ご助言いただいた方の回答をBAにいたしました。
現在、最下行に挿入されないことで悩んでもしょうがないので、getLastRowを使用せずにフォーム回答が行われた行を特定して処理を行っています。
回答1件
あなたの回答
tips
プレビュー