前提・実現したいこと
スプレッドシートからフォームを作成し、予約システムを構築しています。
フォームはプルダウンから3~4つの時刻を選択する形式です。
発生している問題・エラーメッセージ
「回答を編集」URLを回答者に送信することはできました。
回答を編集した際、回答を取り消してもスプレッドシートに値が残ったままです。
別の選択肢に代えた場合や、初回回答時に未回答だった部分の追加回答は、うまく反映されています。
ご教示いただけますと幸いです。
function getFormtest(e) { //'を消すコード var range = e.range; range.setValues(range.getValues()); //フォームを取得 var form = FormApp.openById('') var items = form.getItems() var allitem = form.getResponses() //名前とメアドを回答から取得 var name = e.values[1] var email = e.values[2] //回答を編集用URLを取得 var url = allitem[Number(allitem.length - 1)].getEditResponseUrl(); var array = []; //配列を宣言 //質問項目+回答を配列に入れる。回答がない場合はスキップ for (var i = 3; i < items.length; i++) { var ques = e.values[i +1] if(ques.length === 0){ continue; } var index = items[i].getTitle() array.push('【'+ index +'】' + ques) } // メール送信 MailApp.sendEmail({ to: email, subject: 'ご予約ありがとうございます', body: name + '様\n' + array + '\n'+ url + '\n' }); } function フォーム作成用() { //シートの読み取り var sheet = SpreadsheetApp.getActive().getSheetByName('営業日') var sheet2 = SpreadsheetApp.getActive().getSheetByName('設定'); //フォーム名と説明文を取得し、フォームを作成 var formTitle = sheet2.getRange(1,1).getValues(); var formDescription = sheet2.getRange(1,2).getValues(); var form = FormApp.create(formTitle); form.setDescription(formDescription); //名前とメールアドレスを取得し、質問を作成 form.addTextItem().setTitle('お子様の名前').setRequired(true); var validationEmail = FormApp.createTextValidation().requireTextIsEmail().build(); form.addTextItem().setTitle('メールアドレス').setRequired(true).setValidation(validationEmail); //営業日、選択肢を2次元配列として格納 var alldata = sheet.getDataRange().getValues(); alldata.shift() var timedata = sheet.getRange("D2:w32").getValues() //営業日を1次元配列として格納 function generateArray(alldata,colmn){ return alldata.map(record => record[colmn]) } var ad = generateArray(alldata,0) //日付と曜日を取得 for (let i=0; i<ad.length; i++){ timedata2 = timedata[i].filter(Boolean) if(timedata2.length === 0){ continue; } aday = Utilities.formatDate(alldata[i][0],"JST", "dd日") var daydate = (aday+" ("+alldata[i][1]+")") //その日の時間帯を取得し、リストを作成 form.addListItem() .setTitle(daydate) .setChoiceValues(timedata2) } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/03 22:27