質問編集履歴

6

return array_dataを追記

2018/10/18 02:14

投稿

_af28_
_af28_

スコア18

test CHANGED
File without changes
test CHANGED
@@ -118,6 +118,10 @@
118
118
 
119
119
  Logger.log(array_data);
120
120
 
121
+  return array_data;
122
+
123
+
124
+
121
125
  //array_dataの中身は
122
126
 
123
127
  [2018/10/27 09:00, 2018/10/27 09:30, 2018/10/27 10:00~]のような日付の文字列を想定

5

array_dataの中身を追記

2018/10/18 02:13

投稿

_af28_
_af28_

スコア18

test CHANGED
File without changes
test CHANGED
@@ -118,6 +118,10 @@
118
118
 
119
119
  Logger.log(array_data);
120
120
 
121
+ //array_dataの中身は
122
+
123
+ [2018/10/27 09:00, 2018/10/27 09:30, 2018/10/27 10:00~]のような日付の文字列を想定
124
+
121
125
 
122
126
 
123
127
  };

4

html部分を更新しました

2018/10/17 06:56

投稿

_af28_
_af28_

スコア18

test CHANGED
File without changes
test CHANGED
@@ -154,23 +154,25 @@
154
154
 
155
155
  function createSelectBox(){
156
156
 
157
+ google.script.run.withSuccessHandler(
157
158
 
159
+ function(array_data) {
158
160
 
159
-  google.script.run.downlist();
161
+ for(var i=0;i<array_data.length;i++){
160
162
 
161
-
163
+ let op = document.createElement("option");
162
164
 
163
- for(var i=0;i<res.length;i++){
165
+ op.value = array_data[i].val; //value
164
166
 
165
- let op = document.createElement("option");
167
+ op.text = array_data[i].txt; //テキスト値
166
168
 
167
- op.value = array_data[i].val; //value値
169
+ document.getElementById("start_time").appendChild(op);
168
170
 
169
- op.text = array_data[i].txt; //テキスト値
171
+ }
170
172
 
171
- document.getElementById("start_time").appendChild(op);
173
+ }).set_availability();
172
174
 
173
- }
175
+ };
174
176
 
175
177
 
176
178
 

3

gas部分追記いたしました

2018/10/16 07:01

投稿

_af28_
_af28_

スコア18

test CHANGED
File without changes
test CHANGED
@@ -49,6 +49,10 @@
49
49
  //ステータス列の判定
50
50
 
51
51
  var array_data=[];
52
+
53
+ var array_data1=[];
54
+
55
+ var array_data2=[];
52
56
 
53
57
 
54
58
 
@@ -108,7 +112,7 @@
108
112
 
109
113
  var _ =Underscore.load();
110
114
 
111
- var array_data = _.intersection(array_data);
115
+ var array_data = _.intersection(array_data1,array_data2);
112
116
 
113
117
 
114
118
 

2

gas部分追記いたしました

2018/10/16 02:38

投稿

_af28_
_af28_

スコア18

test CHANGED
File without changes
test CHANGED
@@ -12,37 +12,119 @@
12
12
 
13
13
 
14
14
 
15
- ### 仮.gas
15
+ ### 仮.gas 
16
+
17
+ ※メモ※昨日papinianus様にご教示いただいた内容は未反映です
16
18
 
17
19
 
18
20
 
19
21
  ```ここに言語名を入力
20
22
 
21
- function downlist(){
23
+ function set_availability(sheet, column, id){
22
24
 
23
25
 
24
26
 
25
- ~~~~処理~~~~~
27
+ //時間の記載されているSS
26
28
 
29
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
30
+
27
- var end_date_in = Utilities.formatDate(ed , "Asia/Tokyo", "yyyy/MM/dd HH:mm");
31
+ var availability_spreadsheet = spreadsheet.getSheetByName('SS');
28
32
 
29
33
 
30
34
 
35
+ var calendar_id = "アドレス1";
36
+
31
- //上記の"yyyy/MM/dd HH:mm"とフォーマットされた複数のデータがresの中に入ってきます
37
+ var calendar_id2 = "アドレス2";
32
38
 
33
39
 
34
40
 
35
- var res = [配列結果を想定];
41
+ var last_row = availability_spreadsheet.getLastRow()
36
42
 
43
+ var calendar_info = CalendarApp.getCalendarById(calendar_id);
44
+
45
+ var calendar_info2 = CalendarApp.getCalendarById(calendar_id2);
46
+
47
+
48
+
49
+ //ステータス列の判定
50
+
51
+ var array_data=[];
52
+
53
+
54
+
55
+ for(var i = 3; i <= last_row; i++){
56
+
57
+
58
+
59
+ //SS3行目から30分ごとに時間が記載されています
60
+
61
+ var start_date_base = availability_spreadsheet.getRange(i, 1).getValue();
62
+
63
+ var start_date_tmp = new Date(start_date_base);
64
+
65
+ var end_date_tmp = start_date_tmp.setMinutes(start_date_tmp.getMinutes()+30);
66
+
67
+ var start_date = new Date(start_date_base);
68
+
69
+ var end_date = new Date(end_date_tmp);
70
+
71
+
72
+
73
+ var myEvents= calendar_info.getEvents(start_date, end_date);
74
+
75
+
76
+
77
+ var myEvents2= calendar_info2.getEvents(start_date, end_date);
78
+
79
+
80
+
81
+ //予定がなかったら格納
82
+
83
+ if (myEvents.length == 0){
84
+
85
+ var start_date_in = Utilities.formatDate(start_date , "Asia/Tokyo", "yyyy/MM/dd HH:mm");
86
+
87
+ array_data.push(start_date_in);
88
+
89
+ }
90
+
91
+
92
+
93
+ //予定がなかったら格納
94
+
95
+ if (myEvents2.length == 0){
96
+
97
+ var start_date_in = Utilities.formatDate(start_date , "Asia/Tokyo", "yyyy/MM/dd HH:mm");
98
+
99
+ array_data.push(start_date_in);
100
+
101
+ }
102
+
103
+
104
+
105
+ }
106
+
107
+
108
+
109
+ var _ =Underscore.load();
110
+
111
+ var array_data = _.intersection(array_data);
112
+
113
+
114
+
115
+ Logger.log(array_data);
116
+
117
+
118
+
37
- };
119
+ };
38
120
 
39
121
  ```
40
122
 
41
123
 
42
124
 
43
- ### 仮.html
44
125
 
45
126
 
127
+ ### 仮.html
46
128
 
47
129
  ```ここに言語名を入力
48
130
 
@@ -78,9 +160,9 @@
78
160
 
79
161
  let op = document.createElement("option");
80
162
 
81
- op.value = res[i].val; //value値
163
+ op.value = array_data[i].val; //value値
82
164
 
83
- op.text = res[i].txt; //テキスト値
165
+ op.text = array_data[i].txt; //テキスト値
84
166
 
85
167
  document.getElementById("start_time").appendChild(op);
86
168
 

1

resの中身を追記しました

2018/10/16 02:37

投稿

_af28_
_af28_

スコア18

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,17 @@
20
20
 
21
21
  function downlist(){
22
22
 
23
+
24
+
23
- ~~~配列を作成するscript~~~
25
+ ~~~~処理~~~~~
26
+
27
+ var end_date_in = Utilities.formatDate(ed , "Asia/Tokyo", "yyyy/MM/dd HH:mm");
28
+
29
+
30
+
31
+ //上記の"yyyy/MM/dd HH:mm"とフォーマットされた複数のデータがresの中に入ってきます
32
+
33
+
24
34
 
25
35
  var res = [配列結果を想定];
26
36