質問編集履歴

4

-

2020/12/30 07:05

投稿

momiji0210
momiji0210

スコア60

test CHANGED
File without changes
test CHANGED
@@ -1,143 +1 @@
1
- 参考サイトをみながらスプレッドシートのデータをGoogleカレンダーに連携するプログラムを記載しております。
2
-
3
- 新規追加の機能はできたのですが、編集機能がうまく動作しません。
4
-
5
-
6
-
7
- 参考コードのelse部分の処理なのですが、どこが間違えているかわからなくて困っております。
8
-
9
- スプレッドシートの名前列を変更した際などに、カレンダーの情報を上書きするみたいな処理を書きたいです。
10
-
11
-
12
-
13
-
14
-
15
- 参考サイト
16
-
17
- https://tonari-it.com/google-form-task-input/
18
-
19
-
20
-
21
- スプレッドシート
22
-
23
- タイムスタンプ 名前 日付 時刻 種別 備考 カレンダーID ステータス
24
-
25
- ※ hogehogeXXXXXXXXXXX はテスト環境では本番環境のID
26
-
27
-
28
-
29
- ```GAS
30
-
31
- /* 指定月のカレンダーからイベントを取得する */
32
-
33
- function addTaskEvents() {
34
-
35
-
36
-
37
- const EVENT_NAME = 1;
38
-
39
- const EVENT_DATE = 2;
40
-
41
- const EVENT_TIME = 3;
42
-
43
- const EVENT_CALENDER_ID = 6;
44
-
45
- const EVENT_STATUS = 7;
46
-
47
-
48
-
49
- var myCal = CalendarApp.getCalendarById('v84gqspl3bu82i1519vbf7k6vk@group.calendar.google.com'); //カレンダーIDでカレンダーを取得
50
-
51
- var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
52
-
53
- var dat = mySheet.getDataRange().getValues(); //シートデータを取得
54
-
55
-
56
-
57
- for(var i=1;i<dat.length;i++){
58
-
59
- // カレンダーIDが空なら新規追加
60
-
61
- if(dat[i][EVENT_CALENDER_ID] == ""){
62
-
63
-
64
-
65
- /* 日時をセット */
66
-
67
- var evtDate = new Date(dat[i][EVENT_DATE]);
68
-
69
- var evtTime = new Date(dat[i][EVENT_TIME]);
70
-
71
- evtDate.setHours(evtTime.getHours());
72
-
73
- evtDate.setMinutes(evtTime.getMinutes());
74
-
75
-
76
-
77
- /* イベントの追加・スプレッドシートへの入力 */
78
-
79
- var myEvt = myCal.createEvent(dat[i][EVENT_NAME],evtDate,evtDate); //カレンダーにタスクをイベントとして追加
1
+ ********************************************************************************************
80
-
81
-
82
-
83
- dat[i][EVENT_CALENDER_ID]=myEvt.getId(); //イベントIDを入力
84
-
85
- dat[i][EVENT_STATUS]='未完';
86
-
87
- } else {
88
-
89
- /* 更新 */
90
-
91
- var myEvtID = dat[i][EVENT_CALENDER_ID]; //イベントID
92
-
93
- var myEvts = myCal.getEventsForDay(dat[i][EVENT_DATE]); //当日のイベントを取得
94
-
95
- for each(var evt in myEvts){ //取得したイベントの配列全てについて繰り返す
96
-
97
- evt.setTitle("aa");
98
-
99
- }
100
-
101
- /*
102
-
103
- for each(var evt in myEvts){ //取得したイベントの配列全てについて繰り返す
104
-
105
- if(evt.getId() == myEvtID){ //現在のIDが目的のIDであれば
106
-
107
- evt.setTitle(dat[i][EVENT_NAME]);
108
-
109
- }
110
-
111
- }
112
-
113
- */
114
-
115
- }
116
-
117
- }
118
-
119
-
120
-
121
- mySheet.getRange(1,1,i,8).setValues(dat); //データをシートに出力
122
-
123
- }
124
-
125
- ```
126
-
127
-
128
-
129
- 追記 もしかするとTimeZoneの設定がおかしいのかもしれません。
130
-
131
- ログを出力したところ、myEvtsの取得件数がおかしかったです。本来、1件とれなければならないところが0件、2件のところが1件となっています。
132
-
133
- スプレッドシートでは 2020/12/30 12:00:00の用に管理していますが、これがログだと
134
-
135
- Tue Dec 29 2020 10:00:00 GMT-0500 (EST)となっていました。
136
-
137
-
138
-
139
- 15:29:11 デバッグ 1 0 Tue Dec 29 2020 10:00:00 GMT-0500 (EST)
140
-
141
- 15:29:11 デバッグ 2 1 Wed Dec 30 2020 10:00:00 GMT-0500 (EST)
142
-
143
- 15:29:11 デバッグ 3 1 Wed Dec 30 2020 10:00:00 GMT-0500 (EST)

3

追記

2020/12/30 07:05

投稿

momiji0210
momiji0210

スコア60

test CHANGED
File without changes
test CHANGED
@@ -123,3 +123,21 @@
123
123
  }
124
124
 
125
125
  ```
126
+
127
+
128
+
129
+ 追記 もしかするとTimeZoneの設定がおかしいのかもしれません。
130
+
131
+ ログを出力したところ、myEvtsの取得件数がおかしかったです。本来、1件とれなければならないところが0件、2件のところが1件となっています。
132
+
133
+ スプレッドシートでは 2020/12/30 12:00:00の用に管理していますが、これがログだと
134
+
135
+ Tue Dec 29 2020 10:00:00 GMT-0500 (EST)となっていました。
136
+
137
+
138
+
139
+ 15:29:11 デバッグ 1 0 Tue Dec 29 2020 10:00:00 GMT-0500 (EST)
140
+
141
+ 15:29:11 デバッグ 2 1 Wed Dec 30 2020 10:00:00 GMT-0500 (EST)
142
+
143
+ 15:29:11 デバッグ 3 1 Wed Dec 30 2020 10:00:00 GMT-0500 (EST)

2

-

2020/12/30 06:32

投稿

momiji0210
momiji0210

スコア60

test CHANGED
File without changes
test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
  if(evt.getId() == myEvtID){ //現在のIDが目的のIDであれば
106
106
 
107
- evt.setTitle("aa");
107
+ evt.setTitle(dat[i][EVENT_NAME]);
108
108
 
109
109
  }
110
110
 

1

Codeが古いVerだったため修正

2020/12/30 06:15

投稿

momiji0210
momiji0210

スコア60

test CHANGED
File without changes
test CHANGED
@@ -42,9 +42,11 @@
42
42
 
43
43
  const EVENT_CALENDER_ID = 6;
44
44
 
45
+ const EVENT_STATUS = 7;
45
46
 
46
47
 
48
+
47
- var myCal = CalendarApp.getCalendarById('hogehogeXXXXXXXXXXX@group.calendar.google.com'); //カレンダーIDでカレンダーを取得
49
+ var myCal = CalendarApp.getCalendarById('v84gqspl3bu82i1519vbf7k6vk@group.calendar.google.com'); //カレンダーIDでカレンダーを取得
48
50
 
49
51
  var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
50
52
 
@@ -78,9 +80,9 @@
78
80
 
79
81
 
80
82
 
81
- dat[i][6]=myEvt.getId(); //イベントIDを入力
83
+ dat[i][EVENT_CALENDER_ID]=myEvt.getId(); //イベントIDを入力
82
84
 
83
- dat[i][7]='未完';
85
+ dat[i][EVENT_STATUS]='未完';
84
86
 
85
87
  } else {
86
88
 
@@ -90,21 +92,31 @@
90
92
 
91
93
  var myEvts = myCal.getEventsForDay(dat[i][EVENT_DATE]); //当日のイベントを取得
92
94
 
93
-
95
+ for each(var evt in myEvts){ //取得したイベントの配列全てについて繰り返す
96
+
97
+ evt.setTitle("aa");
98
+
99
+ }
100
+
101
+ /*
94
102
 
95
103
  for each(var evt in myEvts){ //取得したイベントの配列全てについて繰り返す
96
104
 
97
105
  if(evt.getId() == myEvtID){ //現在のIDが目的のIDであれば
98
106
 
99
- evt.setTitle(dat[i][EVENT_NAME]);
107
+ evt.setTitle("aa");
100
108
 
101
109
  }
102
110
 
103
111
  }
104
112
 
113
+ */
114
+
105
115
  }
106
116
 
107
- }
117
+ }
118
+
119
+
108
120
 
109
121
  mySheet.getRange(1,1,i,8).setValues(dat); //データをシートに出力
110
122