回答編集履歴

2

追記

2021/05/24 00:04

投稿

Tatsunosuke
Tatsunosuke

スコア599

test CHANGED
@@ -1,5 +1,133 @@
1
1
  追記
2
2
 
3
+ if(today == tmp) // ここで今日とDatas[m][6]の比較をしています。
4
+
5
+
6
+
7
+
8
+
9
+ エラーが出ないということであれば、まずどこまでが動いているのか確認する上で、console.logやLogger.log、デバッグで流れを見てみていただけますか?。
10
+
11
+
12
+
13
+ デバッグであれば、 //メール送信(送信元を○○課でメールを送信する) メール送信前で止めて、
14
+
15
+ 変数に自分の期待した値が入っているか希望どおりの挙動となっているか確認してみてください。
16
+
17
+
18
+
19
+ console.logやLogger.logを使用するのであれば、
20
+
21
+ 各処理が始まるタイミング、終わるタイミングで処理のキーとなっている部分に記入し、挙動を確認してみてください。
22
+
23
+
24
+
25
+
26
+
27
+ ```gas
28
+
29
+ function Daily_mail(){
30
+
31
+ //管理表の入力状況をデイリーメールとして配信
32
+
33
+ var ss=SpreadsheetApp.getActiveSpreadsheet(); //開いているスプレッドシートを取得
34
+
35
+ var Manage_Sheet=ss.getSheetByName("課題"); //「課題」シートを取得
36
+
37
+ var Datas=Manage_Sheet.getDataRange().getValues(); //「課題」シートのデータを取得
38
+
39
+
40
+
41
+ var today = dayjs.dayjs().format("YYYY/MM/DD")
42
+
43
+ var flag=0; //フラグ
44
+
45
+
46
+
47
+ Manage_LastRow=Manage_Sheet.getRange("C:C").getValues().filter(String).length; //管理表シートのC列の最終行を取得
48
+
49
+ var tmp_msg=""; //メール文言
50
+
51
+ for(var m=13;m<=Manage_LastRow+1;m++){
52
+
53
+ var tmp = dayjs.dayjs(Datas[m][6]).format("YYYY/MM/DD"); //M列の日付を取得
54
+
55
+
56
+
57
+ Logger.log(Datas[m][6]);
58
+
59
+ //M列でセル結合している部分の回避処理
60
+
61
+ if (tmp==""){
62
+
63
+ continue;
64
+
65
+ }
66
+
67
+ if(today == tmp){
68
+
69
+ //M列の日付が今日の日付である場合にフラグをたてて、メール本文を作成する
70
+
71
+ flag=1; //フラグに1を代入する
72
+
73
+ tmp_msg=tmp_msg+"● No."+Datas[m][0]+"  "+Datas[m][3]+" "+Datas[m][4]+"  "+Datas[m][5]+"\n"; //フォーム投稿があったデータをメール本文用に取りまとめ
74
+
75
+ }
76
+
77
+ }
78
+
79
+ //フラグが立っている場合(当日の日付がある場合)
80
+
81
+ if(flag==1){
82
+
83
+ var ss_Url=ss.getUrl(); //スプレッドシートのURLを取得(スプレッドシートへのリンク生成用)
84
+
85
+ var sh_id=Manage_Sheet.getSheetId(); //シートのシートIDを取得(スプレッドシートへのリンク生成用)
86
+
87
+ var sh_Url=ss_Url+"#gid="+sh_id; //シートのURL
88
+
89
+ var Mail_to="aaa@gmail.com"; //デイリーメールの送付先(To)を入力
90
+
91
+ var Mail_cc="aaa@gmail.com"; //デイリーメールの送付先(CC)を入力(複数ある場合は、カンマ区切りで複数のアドレスを指定)
92
+
93
+ var Mail_from="aaa@gmail.com";//メール送信元メールアドレス(事務局のML)
94
+
95
+ var Mail_suject="テスト"; //メール件名
96
+
97
+ //メール本文
98
+
99
+ var Mail_text="各位\n\n"+
100
+
101
+ "テスト\n"+
102
+
103
+ "テスト\n"+
104
+
105
+ sh_Url+"\n\n"+
106
+
107
+ "----------------------------------------------------------\n"+
108
+
109
+ tmp_msg+
110
+
111
+ "----------------------------------------------------------\n";
112
+
113
+ //メール送信(送信元を○○課でメールを送信する)
114
+
115
+ GmailApp.sendEmail(Mail_to, Mail_suject, Mail_text,{cc:Mail_cc,name:'○○課',from:Mail_from})
116
+
117
+ }
118
+
119
+ }
120
+
121
+ ```
122
+
123
+
124
+
125
+ ---
126
+
127
+
128
+
129
+ 追記
130
+
3
131
 
4
132
 
5
133
  > また、上記コードは、Toの宛先を固定としておりますが、可能であれば、

1

追記

2021/05/24 00:04

投稿

Tatsunosuke
Tatsunosuke

スコア599

test CHANGED
@@ -1,3 +1,83 @@
1
+ 追記
2
+
3
+
4
+
5
+ > また、上記コードは、Toの宛先を固定としておりますが、可能であれば、
6
+
7
+ G列のチーム名毎(Aチーム:aaa@gmail.com/Bチーム:bbb@gmail.com)に、
8
+
9
+ 宛先を変更したいです。
10
+
11
+
12
+
13
+ チーム名のアドレスは、コードの中に組み込みでも良いですし、
14
+
15
+ 別シートへの記載でもよいのですが、実装する事は可能でしょうか?
16
+
17
+
18
+
19
+ もちろん可能です。
20
+
21
+ コード内に組み込むのであれば、
22
+
23
+ ```gas
24
+
25
+ var team = *** ← //取得したチーム名を入れる
26
+
27
+ var to;
28
+
29
+ switch(team){
30
+
31
+ case "Aチーム"
32
+
33
+ to = "aaa@gmail.com"
34
+
35
+ break;
36
+
37
+ case "Bチーム"
38
+
39
+ to = "bbb@gmail.com"
40
+
41
+ break;
42
+
43
+ case "Cチーム"
44
+
45
+ to = "ccc@gmail.com"
46
+
47
+ break;   
48
+
49
+ }
50
+
51
+
52
+
53
+ ```
54
+
55
+ と、switch文で可能です。
56
+
57
+ 別シートを利用するのであれば、if文とfor文で使えば抽出できると思います。
58
+
59
+
60
+
61
+ > なお、画像の様に、「Aチーム」が2件ある場合は、「Aチーム」へのメールは、1通に纏めたいです。
62
+
63
+
64
+
65
+ ここ場合は、連想配列等を利用したり、それぞれのチームごとの変数をつくり入れておくという方法を用いれば可能です。
66
+
67
+
68
+
69
+ 連想配列や二次元配列が理解できていないと意味不明となると思うので、まずは単発でメールを送れるようになったのちに改めて質問いただき、実装されるのがよいかと思います!
70
+
71
+
72
+
73
+
74
+
75
+ ---
76
+
77
+
78
+
79
+
80
+
1
81
  var today になにも代入されていないので↓ここから下はすべて処理が実行されないです。
2
82
 
3
83