前提・実現したいこと
Googleフォームに入力された内容をメール送信するようにしています。(GASはフォーム側に記載しています)
その際、フォーム内容が記録されているスプレッドシートの行番(最終行)を案件番号として件名とメール本文内に記載しています。
件名:フォームの件名固定/No.XX
「XX」に自動的に最終行番号が入る。
A列に自動的にフォーム送信時のタイムスタンプが入り、B列以降はフォームの項目内容が入ります。
最終列は空白の場合もあります。
SSに記録された行(最終行)を案件番号として振り分けています。
フォームの記録が見出し込みで5行目の場合は「No.5」としたいです。
ですが、この最終行番号が重複したり、番号が飛んだり、マイナス1少なくなったりしており、正確な最終行番号の取得が行えていません。
ですが、とりあえず番号は入った状態メール通知はされている状態です。
発生している問題・エラーメッセージ
特になし。最終行番号が正常に取得できません。
5行目、6行目の内容がどちらもNo.5になる、7行目の内容がNo.5になる、5行目の内容がNo.4になり6行目の内容がNo.5になったり等。
単純に最終行番号取得でよいので、-1の設定はなし。
該当のソースコード
function submitForm(e){ var itemResponses = e.response.getItemResponses(); var timestamp = e.response.getTimestamp(); //問合せ日時 var date = Utilities.formatDate(timestamp, 'Asia/Tokyo', "YYYY'年'MM'月'dd'日' HH:mm:ss"); //問合せ日時 var message = ''; //投稿内容部分 var to = e.response.getRespondentEmail();//to //アドレス指定 var admin_name ="送信者名";//送信メールの名前 var admin = "aaa@hoge.jp"; // 先程作成したアドレスに書換 var cc = admin + ""; var bcc = "kanrisha@hoge.jp";// bccがいらない場合は、adminを""に書換 var reply = admin; var sheet = SpreadsheetApp.openById("xxxxxxxxxxxスプレッドシートIDxxxxxxxxx").getSheetByName("シート名") // スプレッドシートの操作 //フォーム取得 for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); var id = sheet.getLastRow();
試したこと
getLastRowでシート全体の最終行取得でどうにかなると思いましたが、うまくいかなないのでgetRangeも併用したりしましたがうまく動きませんでした。
テスト投稿した際の行はスプレッドシートから削除していたりするのでそれも起因しているのかな…と思いました。
挿入場所が悪いのかと思い、var id = sheet.getLastRow(); をvar sheetの下にしたりもしましたが、同様の現象が発生します。
補足情報
GAS(というよりプログラム的な事)は全くの素人で調べながらでの作業となります。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/11 10:08 編集
2020/06/11 12:55
2020/06/11 23:59