質問編集履歴

2

実装したい内容

2020/08/11 09:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  やりたい事
6
6
 
7
- 下記スプレッドシートのD列が"送る"になっている場合、グループチャット内(B列)の特定の人(C列)にTOでタスク(A列の内容)を追加したい」
7
+ 「グループチャット内(A列)の特定の人(B列)にTOでタスク(E/F列の内容)を追加したい」
8
-
9
- https://docs.google.com/spreadsheets/d/13GSyTALYed_BebDpjrSj7yuCZsJxrzhQMa2btT6n-60/edit#gid=0
8
+
10
-
11
-
12
-
9
+
10
+
13
- 手動で実行しのですがどのようなスクリプトを組めば良いでしょうか。
11
+ 上記については下記スクリプトで実装できたのですが
12
+
13
+ 「スプレッドシートのG列が"〇"になっている場合」を追加したいのですが
14
14
 
15
15
  ご回答お待ちしております。
16
16
 

1

スクリプト内容の追加

2020/08/11 09:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,295 @@
13
13
  手動で実行したいのですがどのようなスクリプトを組めば良いでしょうか。
14
14
 
15
15
  ご回答お待ちしております。
16
+
17
+
18
+
19
+ ```
20
+
21
+ function chatworkAutoPost(){
22
+
23
+ //*****************************************************
24
+
25
+ //初期設定
26
+
27
+ //*****************************************************
28
+
29
+
30
+
31
+ //chatworkのトークン
32
+
33
+ var tkn='ID';
34
+
35
+ //定期リストが入っているシート名の設定
36
+
37
+ var sn='定期作業'
38
+
39
+
40
+
41
+ //スプレッドシートのファイルID
42
+
43
+ var ssId='ID';
44
+
45
+
46
+
47
+ //タスクリストの最大の行数(あんまり多いと時間制限にひっかかるよ)
48
+
49
+ var maxRow=1000;
50
+
51
+
52
+
53
+
54
+
55
+ //*****************************************************
56
+
57
+ //メインメソッド
58
+
59
+ //*****************************************************
60
+
61
+ var ss=SpreadsheetApp.openById(ssId);
62
+
63
+ var s=ss.getSheetByName(sn);
64
+
65
+ var ld=new Date(); //今日の日付オブジェクト
66
+
67
+ var dt=new Date(); //今日の日付オブジェクト
68
+
69
+ var tanto;
70
+
71
+ var limit=0;
72
+
73
+ var message;
74
+
75
+
76
+
77
+ for(i=3;i<=maxRow;i++){
78
+
79
+ var rid = s.getRange(i, 1).getValue();
80
+
81
+ var flg=getShoriFlg(s.getRange(i, 3).getValue(),dt);
82
+
83
+
84
+
85
+ if(rid==''){
86
+
87
+ break;
88
+
89
+ }else{
90
+
91
+ if(flg==true){
92
+
93
+ //実際のAPI処理
94
+
95
+
96
+
97
+ //タスクの本文を作成
98
+
99
+ message='[info][title]';
100
+
101
+ message+=s.getRange(i, 5).getValue();
102
+
103
+ message+='[/title]';
104
+
105
+ message+=s.getRange(i, 6).getValue();
106
+
107
+ message+='[/info]';
108
+
109
+ message+='※これは自動に投稿されたタスクです';
110
+
111
+
112
+
113
+ //タスクの期限を決定
114
+
115
+ ld=new Date;
116
+
117
+ ld.setDate(dt.getDate()+s.getRange(i, 4).getValue());
118
+
119
+ limit=ld.getTime()/1000;
120
+
121
+ limit = limit.toFixed();
122
+
123
+
124
+
125
+ //タスクの担当者を取得
126
+
127
+ tanto=s.getRange(i, 2).getValue();
128
+
129
+
130
+
131
+ //タスクの追加処理
132
+
133
+ addTask(tkn,rid,message,limit,tanto);
134
+
135
+ }
136
+
137
+ }
138
+
139
+ }//next
140
+
141
+ }
142
+
143
+
144
+
145
+ //*****************************************************
146
+
147
+ //タスク追加処理メソッド
148
+
149
+ //*****************************************************
150
+
151
+ function addTask(token,room_id,body,limit,to_ids){
152
+
153
+ var params = {
154
+
155
+ headers : {"X-ChatWorkToken" : token}, //APIトークン
156
+
157
+ method : "post",
158
+
159
+ payload : {
160
+
161
+ body : body, //タスク内容
162
+
163
+ limit : limit, //タスク期限
164
+
165
+ to_ids : to_ids //アカウントID
166
+
167
+ }
168
+
169
+ };
170
+
171
+
172
+
173
+ Logger.log(params);
174
+
175
+
176
+
177
+ //タスク投稿実処理
178
+
179
+ var url = "https://api.chatwork.com/v2/rooms/" + room_id + "/tasks";
180
+
181
+ return UrlFetchApp.fetch(url, params); //チャットワークAPIにリクエスト
182
+
183
+ }
184
+
185
+
186
+
187
+ //*****************************************************
188
+
189
+ //処理すべき日かの判定
190
+
191
+ //*****************************************************
192
+
193
+ function getShoriFlg(postdate,dt){
194
+
195
+ var flg=false;
196
+
197
+ var span=postdate.substr(0,4);
198
+
199
+
200
+
201
+ if(span=="[毎日]"){
202
+
203
+ flg=true;
204
+
205
+ }else if(span=="[毎週]"){
206
+
207
+ var d2;
208
+
209
+
210
+
211
+ switch(postdate.substr(4,1)){
212
+
213
+ case '月':
214
+
215
+ d2=1;
216
+
217
+ break;
218
+
219
+ case '火':
220
+
221
+ d2=2;
222
+
223
+ break;
224
+
225
+ case '水':
226
+
227
+ d2=3;
228
+
229
+ break;
230
+
231
+ case '木':
232
+
233
+ d2=4;
234
+
235
+ break;
236
+
237
+ case '金':
238
+
239
+ d2=5;
240
+
241
+ break;
242
+
243
+ case '土':
244
+
245
+ d2=6;
246
+
247
+ break;
248
+
249
+ case '日':
250
+
251
+ d2=0;
252
+
253
+ break;
254
+
255
+ }
256
+
257
+
258
+
259
+ if(dt.getDay()==d2){
260
+
261
+ flg=true;
262
+
263
+ }
264
+
265
+ }else if(span=="[平日]"){
266
+
267
+ if((dt.getDay()>=1)&(dt.getDay()<=5)){
268
+
269
+ flg=true;
270
+
271
+ }else{
272
+
273
+ flg=false;
274
+
275
+ }
276
+
277
+ }else if(span=="[毎月]"){
278
+
279
+ if(dt.getDate()==postdate.substr(4,2)){
280
+
281
+ flg=true;
282
+
283
+ }
284
+
285
+ }else if(span=="[月末]"){
286
+
287
+ if(new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate()==dt.getDate()){
288
+
289
+ flg=true;
290
+
291
+ }
292
+
293
+ }else if(span=="[毎年]"){
294
+
295
+ if((dt.getMonth()+1==1)&(dt.getDate()==1)){
296
+
297
+ flg=true;
298
+
299
+ }
300
+
301
+ }
302
+
303
+ return flg;
304
+
305
+ }
306
+
307
+ ```