Googleフォームの入力内容を送信時に、別のシートに編集用ののアドレスを追加する。
Googleフォームは、一度入力すると変更するためには、編集用のアドレスを記録して置かなければなりません。アンケート等では、変更できないほうが良いのですが、入力した人に後から内容を変更してもらう場合などには不便です。
そこで、編集用のアドレスをメールで返送する方法などはありましたが、一覧を見て選んで編集する方法がなかなか見つかりませんでした。
方法として、フォーム送信時に、スプレッドシートにフォームに入力した必要な項目を貼り付け、最後に編集用のアドレスを貼り付けます。こうすることにより、再編集が可能になります。
貼付用のスプレッドシートを作成してIDを取得しておく
↓
Googleフォームからスクリプトエディタを起動させる。
↓
コード.gsに
var ss = SpreadsheetApp.openById(""スプレッドシートのID"");
var responseSheet = ""シート名"";
function submitFormFunc(e) {
var items = e.response.getItemResponses();
var responses={};
for(var i = 0; i< items.length; i++) {
responses[items[i].getItem().getTitle()]=items[i].getResponse();
}
var responseRow = [];
responseRow.push(e.response.getTimestamp().toString()); //A列 タイムスタンプ
responseRow.push(e.response.getId()); //B列 ID
responseRow.push(responses[""フォームの項目1""]); //C列 フォームの入力内容
responseRow.push(responses[""フォームの項目2""]); //D列 フォームの入力内容
responseRow.push(responses[""フォームの項目3""]); //E列 フォームの入力内容
responseRow.push(FormApp.getActiveForm().getResponse(e.response.getId()).getEditResponseUrl()); //F列 編集用アドレス
var isNewItem = alreadyExist(ss,e.response.getId());
if(isNewItem<0){
ss.getSheetByName(responseSheet).appendRow(responseRow);
}
else{
ss.getSheetByName(responseSheet).getRange(isNewItem+2, 1, 1, 6).setValues([responseRow]);
}
}
function alreadyExist(ss,id){
var ids = ss.getSheetByName(responseSheet).getRange(""B2:B"").getValues();
for(var i=0; i< ids.length; i++){
if(ids[i][0]===id){
return(i);
}
}
return(-1);
}"
を入力する。
↓
保存
↓
トリガーをフォームの送信時にする
※フォームの再編集は、許可しておいてください。
0 件のコメント:
コメントを投稿