質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

至急!!GASでForm送信時、scriptでメールが送信されない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 240

yoyoy

score 10

本日、急にForm送信時にメールを送信するscriptが動かなくなりました。
エラーも出ていません。
9:00までは動いており、設定変更もしていません。

現在、実際に動いている流れは以下となります。
【申請について】
Formから申請をした人が、利用要件、利用したい時間と日時とを申請します。
利用要件に応じて、担当部署にメールが送信されるように割り振るようにしています。
(.match(/●●/)で●●が条件に合っていたら、その担当部署にメールが送信される。)

【流れ】
①Formから申請 → ②Form送信 → ③申請者に受付完了メール、申請時間外のため、受付できないメール
、担当部署に申請があったメールが送信 →④スプレッドシートで承認可否 →⑤申請者に承認可否の連絡

①と②と④と⑤は動いていますが、③が動いていません。
トリガーを再設定しましたが、現象は変わりません。

メールアドレスのfromのメールアドレスは、.match(/●●/)にあった担当部署のメールアドレス
が入ります。
そのため、以下の同じようなscriptが7つあります。

このsctiptを作成しているGoogleカウントに、Gmailで送信者として送信するのメールアドレスを登録しています。

Form,スプレッドシート、scriptを複写した、テスト環境では、問題なく動いています。

scriptは以下となります。

function Utest(e) {

//有効なGooglesプレッドシートを開く
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

//新規予約された行番号を取得
 var num_row = sheet.getLastRow();


 //メールアドレスの取得
 var nmail = sheet.getRange(num_row,2).getValue();

 //名前の取得
 var name = sheet.getRange(num_row,3).getValue();

//理由を取得
 var riyuu = sheet.getRange(num_row, 4).getValue();

//理由の内容を取得
 var naiyou = sheet.getRange(num_row, 5).getValue();


//予約を記載するカレンダーを取得(テスト)
 var cals = CalendarApp.getCalendarById("カレンダーID");

//★現在日時を取得
var day = Moment.moment(); 

//予約の開始時間を取得
 var stime = new Date(sheet.getRange(num_row, 7).getValue());
 var stime2 = sheet.getRange(num_row, 7).getDisplayValues();

 //予約の終了時間を取得
 var etime = new Date(sheet.getRange(num_row, 8).getValue());
 var etime2 = sheet.getRange(num_row, 8).getDisplayValues();


 //予約日を取得  
 var ndate = new Date(sheet.getRange(num_row, 6).getValue());
 var ndate2 = sheet.getRange(num_row, 6).getDisplayValues();

 var ndates= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),stime.getHours(),stime.getMinutes(),0);
 var ndatee= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),etime.getHours(),etime.getMinutes(),0);

// 時間内かつテストか ★追記
 if(cals.getEvents(ndates, ndatee) == 0 && riyuu.match(/テスト/) && Moment.moment(ndates).isAfter(day)){


 var subject = "申請仮予約";
 var body ='';
 body += 'テストです。\n';
 body += '\n';
 body += '申請の仮予約を受付ました。\n';
 body += '\n';
 body += '【申請内容】\n';
 body += ' ・メールアドレス:   ' + nmail + '\n';
 body += ' ・名前  :   ' + name + '\n';
 body += ' ・理由  :   ' + riyuu + '\n';
 body += ' ・理由の内容  :   ' + naiyou + '\n';
 body += ' ・日  :   ' + ndate2 + '\n';
 body += ' ・希望時間  :   ' + stime2 + '\n';
 body += ' ・予定時間  :   ' + etime2 + '\n';
 body += '\n';
 body += '予約確定次第、再度このメールアドレスにご連絡致します。\n';
 body += '\n';
 body += '\n';


 body = name +" 様\n\n"+body;

GmailApp.sendEmail(nmail,subject,body,
                  {
from: 'メールアドレス',
name: ' テスト',
bcc: 'メールアドレス,
});

var subject2 = "承認をお願いします。";
 var body2 ='';
 body2 += '申請がありました。\n';
 body2 += '承認をお願いします。\n';
 body2 += '\n';  
 body2 += '【申請内容】\n';
 body2 += ' ・メールアドレス:   ' + nmail + '\n';
 body2 += ' ・名前  :   ' + name + '\n';
 body2 += ' ・理由  :   ' + riyuu + '\n';
 body2 += ' ・理由の内容  :   ' + naiyou + '\n';
 body2 += ' ・日  :   ' + ndate2 + '\n';
 body2 += ' ・希望時間  :   ' + stime2 + '\n';
 body2 += ' ・予定時間  :   ' + etime2 + '\n';
 body2 += '\n';
 body2 += '確認後、「承認者名」「承認可否」を入力して下さい。\n';
 body2 += '却下の場合は、可否理由欄に却下理由を記入して下さい。\n';
 body2 += '\n';
 body2 += '\n';  

 GmailApp.sendEmail('メールアドレス',subject2,body2,
                  {
from:'メールアドレス',
name:'テスト',
bcc: 'メールアドレス',
}
);

 }
  if(cals.getEvents(ndates, ndatee) != 0 && riyuu.match(/テスト/) || Moment.moment(ndates).isBefore(day) && riyuu.match(/テスト/)){

  sheet.deleteRow(num_row);

 var body3 ='';
 body3 += '\n'; 
 body3 += '外です。\n';
 body3 += '\n';
 body3 += '【申請内容】\n';
 body3 += ' ・メールアドレス:   ' + nmail + '\n';
 body3 += ' ・名前  :   ' + name + '\n';
 body3 += ' ・理由  :   ' + riyuu + '\n';
 body3 += ' ・理由の内容  :   ' + naiyou + '\n';
 body3 += ' ・日  :   ' + ndate2 + '\n';
 body3 += ' ・希望時間  :   ' + stime2 + '\n';
 body3 += ' ・予定時間  :   ' + etime2 + '\n';
 body3 += '\n';  


 body3 = name +" 様\n\n"+body3;

 GmailApp.sendEmail(nmail,"時間外で申請されています。",body3,
                    {
 from:'メールアドレス',
name:'入構申請',
bcc: 'メールアドレス',});
 }
 }


コード

何か同じような状況になった方がいらっしゃいましたら、回答をお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • KoichiSugiyama

    2020/07/13 15:54

    エラーが出ていないとのことですが、スクリプトでメールを送信した形跡がないということでしょうか。手動でスクリプトを実行してもメールが送れないのでしょうか。

    キャンセル

  • yoyoy

    2020/07/13 17:45

    送信した形跡がありません。
    手動でscriptを実行してもメールは送信されません。

    しかし、Formとscriptをコピーし、、スプレッドシートは回答先として新しくスプレッドシートを作成したところ、メールは送信されました。

    原因が不明の場合、作成しなおしてみようと思っています。

    キャンセル

  • yoyoy

    2020/07/13 18:44

    解決しました。
    スプレッドシートの一番下の行に、文字が入っておりました。
    フィルターをかけており、その行がフィルターに引っかかっていて、気が付くまでに時間がかかってしまいました。
    コメントを頂きましてありがとうございました。
    次回からは、きちんと詳細に質問を投稿するよう注意いたします。

    キャンセル

回答 1

check解決した方法

0

スプレッドシートの一番下の行に、文字が入っておりました。
フィルターをかけており、その行がフィルターに引っかかっていて、気が付くまでに時間がかかってしまいました。
コメントを頂きましてありがとうございました。
次回からは、きちんと詳細に質問を投稿するよう注意いたします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る