質問: userName + '様。\n' + '-- お申込み内容 ------------------------------------\n\n' + '----------------------------------------------------------------\n\n' + '--\n'; MailApp.sendEmail(userMail, subject, body, {name: 'name'}); } } } ``` ### 試したこと 重複行の検索等で調べほぼコピペなのですが・・・ sheet.getDataRange().getValues() で、シート全部の配列になってしまうので、新規回答のC列の値を取ろうとしてます。 行数がわかれば、そこから値もとれるし行削除もできると思うのですがうまくいきません。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: サンプルを書いてみましたが、未検証、無保証です 注意していただきたい点として、2月くらいからフォーム送信のトリガをシート側でかけると、1回の投稿でで複数回実行されてしまう現象がteratailでも質問されています。フォームにフォーム送信時トリガをかけたほうがよいようです(いちおう下記サンプルでは空だったら動作しないようにしていますが) ``` function checks() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("フォーム回答"); const dats = sheet.getDataRange().getValues().map(function(e){ return [e[2], e[1], e[6]]; }); const lastC = dats[dats.length - 1][0]; if(lastC === "") return; dats.slice(0,-1).reduce(function(a, c, i) { return c[0] === lastC ? [[i + 1, c[1], c[2]]].concat(a) : a ;}, []).forEach(function(e) { sendMail(e[1],e[2]); sheet.deleteRow(e[0]); }); } function sendMail(to, name) { const subject = '前回の申し込みはキャンセルされました。'; const body = name + '様。\n' + '-- お申込み内容 ------------------------------------\n\n' + '----------------------------------------------------------------\n\n' + '--\n'; MailApp.sendEmail(to, subject, body, {name: 'name'}); } ```