質問編集履歴

1

追記

2020/03/04 01:11

投稿

kuroryu
kuroryu

スコア7

test CHANGED
File without changes
test CHANGED
@@ -50,11 +50,11 @@
50
50
 
51
51
  function RSSread() {
52
52
 
53
- var LIMIT_TIME = 24*60*60;//1日を秒に変換
53
+ var LIMIT_TIME = 24*60*60;
54
-
54
+
55
- var NOW_UNIX_TIME = Math.floor((new Date().getTime())/1000);//現在時刻のUnixTime
55
+ var NOW_UNIX_TIME = Math.floor((new Date().getTime())/1000);//現在時刻
56
-
56
+
57
- var URL = "https://wifjkege8uhsogfxto.com/rss";//取得したいRSSのURL
57
+ var URL = "https://wifjkege8uhsogfxto.com/rss";//取得RSSのURL
58
58
 
59
59
 
60
60
 
@@ -80,7 +80,7 @@
80
80
 
81
81
  var pubDateUnixTime = Math.floor(pubDate.getTime()/1000);
82
82
 
83
- //もしitemの配信時刻と現在時刻の差が24時間以内だったら
83
+ //もしitemの配信時刻と現在時刻の差が24時間以内だったら
84
84
 
85
85
   if(NOW_UNIX_TIME-pubDateUnixTime<LIMIT_TIME){
86
86
 
@@ -92,7 +92,7 @@
92
92
 
93
93
  });
94
94
 
95
- // スプレッドシートを取得
95
+
96
96
 
97
97
  var mySheet = SpreadsheetApp.getActiveSheet();
98
98
 
@@ -100,7 +100,7 @@
100
100
 
101
101
  //スプレッドシートに書き込み
102
102
 
103
- var cellnum = 1; //2から開始
103
+ var cellnum = 1;
104
104
 
105
105
  for(var i = 0; i < items.length; i++) {
106
106
 
@@ -120,7 +120,7 @@
120
120
 
121
121
  }
122
122
 
123
- //D列の「~」をスペースに置換
123
+ //D列の「~」を半角スペースに置換
124
124
 
125
125
  var lastrow = mySheet.getLastRow();
126
126
 
@@ -134,7 +134,7 @@
134
134
 
135
135
 
136
136
 
137
- //D列をスペースで分割
137
+ //D列を半角スペースで分割
138
138
 
139
139
  var beforeSplit = mySheet.getRange(i+1,5).setValue(replace);
140
140
 
@@ -214,6 +214,282 @@
214
214
 
215
215
  }//end of RSSread
216
216
 
217
+
218
+
219
+
220
+
221
+ // カレンダーからTweet
222
+
223
+ // Twitter AppのConsumer Api Key
224
+
225
+ var API_KEY = "yyyyyyyyyyyyyy";
226
+
227
+ var API_SECRET = "zzzzzzzzzzzzzzzzz";
228
+
229
+
230
+
231
+ /* サービスの設定 */
232
+
233
+ function getService() {
234
+
235
+ return OAuth1.createService('Twitter')
236
+
237
+ .setAccessTokenUrl('https://api.twitter.com/oauth/access_token')
238
+
239
+ .setRequestTokenUrl('https://api.twitter.com/oauth/request_token')
240
+
241
+ .setAuthorizationUrl('https://api.twitter.com/oauth/authorize')
242
+
243
+ .setConsumerKey(API_KEY)
244
+
245
+ .setConsumerSecret(API_SECRET)
246
+
247
+ .setCallbackFunction('authCallback')
248
+
249
+ .setPropertyStore(PropertiesService.getUserProperties());
250
+
251
+ }
252
+
253
+
254
+
255
+ /* コールバック関数 */
256
+
257
+ function authCallback(request) {
258
+
259
+ var service = getService();
260
+
261
+ var authorized = service.handleCallback(request);
262
+
263
+ if (authorized) return HtmlService.createHtmlOutput('認証成功');
264
+
265
+ }
266
+
267
+
268
+
269
+ /* 認証リセット */
270
+
271
+ function reset() {
272
+
273
+ getService().reset();
274
+
275
+ }
276
+
277
+
278
+
279
+ /* 認証用URL */
280
+
281
+ function getOAuthURL() {
282
+
283
+ Logger.log(getService().authorize());
284
+
285
+ }
286
+
287
+
288
+
289
+
290
+
291
+ /*------------------------------------*
292
+
293
+ * 毎分カレンダーから1週間先までの予定を見る。
294
+
295
+ * ↓
296
+
297
+ * 予定が現在、または通知を登録していた時間だった場合お知らせする
298
+
299
+ *------------------------------------*/
300
+
301
+ function MinuteCheckCalender() {
302
+
303
+ //カレンダーからイベントの取得
304
+
305
+ var myCals = CalendarApp.getCalendarById('xxxxxxx@gmail.com'); //特定のIDのカレンダーを取得
306
+
307
+ if (myCals != null) { //権限がないなどの時はnullになるので処理をスルーする
308
+
309
+ //カレンダーから現在〜1週間後までのイベントを取得
310
+
311
+ var startDate = new Date();
312
+
313
+ startDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate(), startDate.getHours(), startDate.getMinutes(), 0);
314
+
315
+ var endDate = new Date();
316
+
317
+ endDate.setDate(endDate.getDate()+7);
318
+
319
+ var myEvents = myCals.getEvents(startDate, endDate);
320
+
321
+
322
+
323
+ if (myEvents.length > 0) { //カレンダーに予定がない時はスルーする
324
+
325
+ //お知らせが必要な予定一覧を作成する
326
+
327
+ var strBody = "";
328
+
329
+ for(var i = 0; i < myEvents.length; i++){
330
+
331
+ var alertTime = -1;
332
+
333
+ var strStart = myEvents[i].getStartTime(); //イベントの開始時刻
334
+
335
+ //予定の日付と今日が同じかチェックする
336
+
337
+ if (startDate.getFullYear() == strStart.getFullYear()) {
338
+
339
+ if (startDate.getMonth() == strStart.getMonth()) {
340
+
341
+ if (startDate.getDate() == strStart.getDate()) {
342
+
343
+ //予定の日時と今が同じ時分かチェックする
344
+
345
+ if (startDate.getHours() == strStart.getHours()) {
346
+
347
+ if (startDate.getMinutes() == strStart.getMinutes()) {
348
+
349
+ //何分前の通知かを保持
350
+
351
+ alertTime = 0;
352
+
353
+ }
354
+
355
+ }
356
+
357
+ }
358
+
359
+ }
360
+
361
+ }
362
+
363
+
364
+
365
+ var intReminders = myEvents[i].getPopupReminders(); //何分前にお知らせするか
366
+
367
+ if (intReminders != null) {
368
+
369
+ if (intReminders.length > 0) {
370
+
371
+ //予定の日時じゃなくても通知が登録されていれば通知時間にお知らせする
372
+
373
+ if (alertTime == -1) {
374
+
375
+ for (var j = 0; j < intReminders.length; j++) {
376
+
377
+ //通知として登録していた日時を取得
378
+
379
+ var minute = intReminders[j];
380
+
381
+ var alertDate = new Date(strStart.getTime());
382
+
383
+ alertDate.setMinutes(alertDate.getMinutes()-minute);
384
+
385
+
386
+
387
+ //通知の日時と今日が同じかチェックする
388
+
389
+ if (startDate.getFullYear() == alertDate.getFullYear()) {
390
+
391
+ if (startDate.getMonth() == alertDate.getMonth()) {
392
+
393
+ if (startDate.getDate() == alertDate.getDate()) {
394
+
395
+ //通知の日時と今が同じ時分かチェックする
396
+
397
+ if (startDate.getHours() == alertDate.getHours()) {
398
+
399
+ if (startDate.getMinutes() == alertDate.getMinutes()) {
400
+
401
+ //何分前の通知かを保持
402
+
403
+ alertTime = minute;
404
+
405
+ break;
406
+
407
+ }
408
+
409
+ }
410
+
411
+ }
412
+
413
+ }
414
+
415
+ }
416
+
417
+ }
418
+
419
+ }
420
+
421
+ }
422
+
423
+ }
424
+
425
+
426
+
427
+ if (alertTime > 0) {
428
+
429
+ var strTitle = myEvents[i].getTitle(); //イベントのタイトル
430
+
431
+ var strLocation = myEvents[i].getLocation(); //場所
432
+
433
+ var strDescription = "\n"+myEvents[i].getDescription(); //説明
434
+
435
+ var strEvent = "";
436
+
437
+ if (myEvents[i].isAllDayEvent()) {//終日イベント
438
+
439
+ strEvent += "【本日のお知らせ】\n本日は、"+strTitle+"です。"+strDescription;
440
+
441
+ } else {
442
+
443
+ var strEnd = myEvents[i].getEndTime(); //イベントの終了時刻
444
+
445
+ strEvent += "【まもなく】\n"+Utilities.formatDate(strStart,'JST','HH:mm')+"~"+Utilities.formatDate(strEnd,'JST','HH:mm')+" "+strLocation+"\n"+strTitle+strDescription;
446
+
447
+
448
+
449
+ }
450
+
451
+ if (strEvent != "") {
452
+
453
+ strBody += strEvent;
454
+
455
+ }
456
+
457
+ }
458
+
459
+ }
460
+
461
+
462
+
463
+
464
+
465
+ if (strBody != "") {//Twitterに予定を投稿する
466
+
467
+ var service = getService();
468
+
469
+ var endPointUrl = 'https://api.twitter.com/1.1/statuses/update.json';
470
+
471
+
472
+
473
+ var response = service.fetch(endPointUrl, {
474
+
475
+ method: 'post',
476
+
477
+ payload: {
478
+
479
+ status: strBody
480
+
481
+ }
482
+
483
+ }
484
+
485
+ )
486
+
487
+ }
488
+
489
+ }
490
+
491
+ }
492
+
493
+ }
494
+
217
495
  ```
218
-
219
- ↓続きます