<実際にやりたいこと>
スプレッドシート(Googleフォームで回答した結果がスプレッドシートに反映)にGASを使って入力された情報の日付が90日前になるとメールでリマインドできるようにしたい
<実際のコード>
function mailSend() {
var mySs = SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得
var Sheet = mySs.getSheetByName('フォームの回答 1'); // シート名を取得
var today = new Date(); //今日の日付を得得
var strSender = "リマインド通知"; //差出人名
var strFrom = "メアド"; //From
/ 繰り返し計算 /
for (var i = 1; i <= 10000; i++) {
var email = Sheet.getRange(i, 3).getValue(); //C列「送信先メールアドレス」を取得
var name1 = Sheet.getRange(i, 4).getValue(); //D列「〇〇」を取得
var name2 = Sheet.getRange(i, 5).getValue(); //E列「××」を取得
var name3 = Sheet.getRange(i, 6).getValue(); //F列「AA」を取得
var name4 = Sheet.getRange(i, 7).getValue(); //G列「氏名」を取得
var name5 = Sheet.getRange(i, 8).getValue(); //H列「種類」を取得
var limit1 = Sheet.getRange(i, 9).getDisplayValue(); //I列「満期」を取得
var limit2 = Sheet.getRange(i, 9).getValue(); //I列「満期」を取得
var note = Sheet.getRange(i, 10).getValue(); //J列「備考」を取得
var date_limit = new Date(limit2); //I列「満期」のDateを作成
var dt = date_limit.getTime() - today.getTime(); //date_limitから今日の日付を引く
var day = Math.ceil(dt / 1000 / 60 / 60 / 24); //日付に変換
if (89 < day && day <= 90) { //満期より90日前を指定
/ メール本文を準備 /
var strSubject1 = "リマインド通知"; //メールタイトル
var strBody1 = "\nいつもお世話になっております。\n"//改行
- "ご登録いただいた情報について満期日が近づきましたのでご連絡いたします。\n" //改行
- "早めのご対応よろしくお願いいたします。\n\n" //改行
- "名:" + name1 + "\n\n" //改行
- "コード:" + name2 + "\n\n" //改行
- "名:" + name3 + "\n\n" //改行
- "名:" + name4 + "\n\n" //改行
- "種類:" + name5 + "\n\n" //改行
- "満期:" + limit1 + "\n\n" //改行
- "備考:" + note + "\n\n" //改行
- "---------------------------------------------------\n" //改行
- "名前\n" //改行
- "推進チーム\n" //改行
- "000-000-0000\n" //改行
- "---------------------------------------------------\n" //改行;
//メールを送信 /
GmailApp.sendEmail(
email, //送信先(C列「送信先メールアドレス」)
strSubject1, //メールタイトル
strBody1, { //メール本文
from: strFrom, //メール送信元
bcc: 'メアド',
name: strSender //差出人名
}
);
}
}
}
<試してみたこと・気になっていること>
当初はうまくできたのですが、どこかいじってしまったのかリマインド通知ができなくなりました...
自分なりに色々試してみましたが、3点以下に記載致します。1点目:Googleフォームで回答した内容がスプレッドシートのフォームの回答3というシートに情報が反映されています。なので、上記のコード上から3行はフォームの回答1と記載があるためここをフォームの回答3にしてみたのですがやはりだめでした。Googleフォームで回答タブ⇒「回答先を選択」して該当のスプレッドシートの選択もしています。
2点目:うまく反映していないのかもと思ったのでGoogleフォームの方で「回答先を選択」を押して再度該当のスプレッドシートを選択すると、スプレッドシートの方のタブが「フォームの回答2」また試すと「フォームの回答3」...と新しく作られていってしまいます。
ちなみに、トリガーの設定などはサイトをみて設定しています。
もしかしたら、このコードは他の人が作成したものなのでコード記載内容とどこかしらの紐づけみたいなのがうまくいっていないのかと思ってみているのですがわからず質問させていただきました。
33点:トリガーを時間軸に変更してみました。トリガーでは、回答頂いたときに、このGASを発動するとなっています。
トリガーとGASが喧嘩しているのが原因かも?ということでイベントソースは時間主導型で設定してみましたがだめでした。目
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
⇩メールにてエラーの通知が来たのでそのメッセージについて追記いたします。
関数:mailSend エラーメッセージ:Exception:範囲は見つかりませんでした トリガー:formSubmit
また、その他にこんなメッセージも記載がありました。
→そのスクリプトはドキュメント★他社証券管理フォーム(回答)のコピーのコピーで使用されています。
やはりシートの紐付けがうまくいってなさそうな気がします。正直なところ、どこをいじって良いのかわからないという状況です。初心者で申し訳ありませんが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。