teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

12

修正を入れました

2019/06/17 11:43

投稿

Illas
Illas

スコア18

title CHANGED
@@ -1,1 +1,1 @@
1
- 配列から指定した予定時間を削除したいです
1
+ googleカレンダーから空き時間を算出したいです
body CHANGED
File without changes

11

修正を入れました

2019/06/17 11:43

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -6,14 +6,13 @@
6
6
  googleカレンダーから2週間分の空き時間を算出したいです。
7
7
  そのデータをスプレットシートを介さず、直接googleフォームの記述欄の方に出力したいと考えています。
8
8
 
9
- 現在2週間分の、9時から18時のと予定の時間を15分単位取得しした
9
+ 2週間分の空き時間は、9時から18時の間で考えており
10
- 時間から時間を引き、空き時間を出力する作業に詰まっています。
11
10
 
11
+ 現在予定がある時間を15分単位で取得しており、
12
+ 9時から18時の時間も15分単位で取得しているところです。
13
+ indexOfやmatchを用いて空き時間を出力する作業に詰まっています。
12
14
 
13
- また時間を15分単位で取得しているのは時間を揃えることでindexOfやmatchを使うことで削除できると考えたからです。
14
15
 
15
- 他の解答者のコードや、調べて試してもエラーが出てしまいました。
16
-
17
16
  自分の憶測でコードを書いているため無駄なコードも多いかと思いますが
18
17
  よろしくお願いいたします。
19
18
 
@@ -21,13 +20,14 @@
21
20
  ### 発生している問題・エラーメッセージ
22
21
 
23
22
  ```
24
- 構造エラー。
23
+ allList_01が全てログに出てくる
25
24
  ```
26
25
 
27
26
  ### 該当のソースコード
28
27
  ```JavaScript
28
+
29
- function abcde() {
29
+ function all_event() {
30
- var myCal=CalendarApp.getCalendarById('Id'); //特定のIDのカレンダーを取得
30
+ var myCal=CalendarApp.getCalendarById('ID'); //特定のIDのカレンダーを取得
31
31
  var dt = new Date(); //当日指定
32
32
  var date = dt.setDate(dt.getDate() + 2); //当日から2日後からイベント日程を取得
33
33
  var startDate = new Date(date); //取得開始日
@@ -36,10 +36,6 @@
36
36
 
37
37
  var myEvents=myCal.getEvents(startDate,endDate); //カレンダーのイベントを取得
38
38
 
39
- var frmid = "Id"; // フォームに繋げる
40
- var frm = FormApp.openById(frmid);
41
-
42
-
43
39
 
44
40
  //カレンダーに入っている予定の時間を15分単位で取得する
45
41
 
@@ -47,8 +43,9 @@
47
43
  for (var i in myEvents) {
48
44
  var startTime = myEvents[i].getStartTime();
49
45
  var endTime = myEvents[i].getEndTime();
50
- var diffCount = (((endTime -startTime)/60)/1000)/15)
46
+ var diffCount = (((endTime -startTime)/60)/1000)/15;
51
47
 
48
+
52
49
  var startTime2 = startTime.setMinutes(startTime.getMinutes() -15);
53
50
  var startTime3 = new Date(startTime2);
54
51
 
@@ -60,7 +57,6 @@
60
57
  };
61
58
 
62
59
 
63
-
64
60
 
65
61
  //配列を用意して2週間分の時間を入れる。
66
62
 
@@ -78,7 +74,7 @@
78
74
 
79
75
  //予定と同様に15分単位にする
80
76
  var diffCount = ((((e_Time - s_Time)/60)/1000)/15);
81
- var TimeLIst = s_Time.setMinutes(s_Time.getMinutes() -15);
77
+ var TimeList = s_Time.setMinutes(s_Time.getMinutes() -15);
82
78
  var TimeList1 = new Date(TimeList);
83
79
 
84
80
  for(j=0;j < diffCount+1;j++){
@@ -88,40 +84,43 @@
88
84
  };
89
85
  };
90
86
  };
87
+
88
+
89
+ //配列を文字列に変える
90
+
91
+ var ngList_01 = ngList.join(',');
92
+
93
+ var allList_01 = allList.join(',');
94
+
95
+
96
+
97
+ //配列を一つにする
91
98
 
99
+ var shin = [];
100
+
101
+ shin[0] = ngList_01
102
+ shin[0] = allList_01
103
+
104
+
92
- //予定時間と日程の時間が15分単位で固定されているため、予定時間を抜き空き時間を算出出来ると考えてコードを書きました。
105
+ //予定時間と日程の時間が15分単位で固定されているため引く
106
+
107
+
93
- for(var n=0; n<allList.length; n++){
108
+ var result = shin.filter( function( time, index, array ) {
109
+
94
- //Logger.log(allList[n])
110
+ //インデックス番号を比較して重複データのみ排除
95
-
96
- for(var i=0; i<ngList.length; i++){
111
+ return array.indexOf(time) === index;
97
-
98
- if (allList[n]).getLocation().match(ngList+i) {
112
+
99
- allList[n].deleteEvent()
100
- }
113
+ })
101
- }
102
- }
103
114
 
115
+ Logger.log(result);
116
+
104
117
  //フォームへの出力はその後に書く予定です
118
+
119
+ };
105
120
 
106
121
  }
107
- ```
108
- ### 試したこと
109
- ```html
110
- {
111
- //候補の日付の配列から、予定がない日付をフィルタして返す
112
122
 
113
- const schedules = allList.slice(0).map(function(element, index, array)
114
-
115
123
 
116
- return schedules.filter(function(time, index, array) {
117
- return calendars.every(function(cal, ind, arr) {
118
- const st = new Date(time);
119
- var ed = new Date(time);
120
- ed.setMinutes(st.getMinutes() + 30);
121
- return cal.getEvents(st, ed).length === 0;
122
- })
123
- });
124
- }
125
124
 
126
125
  ```
127
126
  ### 補足情報(FW/ツールのバージョンなど)

10

修正を入れました

2019/06/17 09:59

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -3,18 +3,18 @@
3
3
 
4
4
 
5
5
  GASについてです。
6
- googleカレンダーから空き時間を算出したいです。
6
+ googleカレンダーから2週間分の空き時間を算出したいです。
7
- そのデータをスプレットシートを介さず、直接googleフォームの記述欄の方に出力したいす。
7
+ そのデータをスプレットシートを介さず、直接googleフォームの記述欄の方に出力したいと考えています。
8
8
 
9
- コード内で
10
- 9時から18時の空き時間を出力したいのですが、
9
+ 現在2週間分の、9時から18時の時間と予定の時間15分単位で取得まし
11
- 2週間分の9時から18のから2週分の予定時間を引き、空き時間を出力する作業に詰まっています。
10
+ から時間を引き、空き時間を出力する作業に詰まっています。
12
11
 
12
+
13
- 時間を15分単位で取得しているのは時間を揃えることでindexOfやmatchを使うことで削除できると考えたからです。
13
+ また時間を15分単位で取得しているのは時間を揃えることでindexOfやmatchを使うことで削除できると考えたからです。
14
+
14
15
  他の解答者のコードや、調べて試してもエラーが出てしまいました。
15
16
 
16
-
17
- 自分の憶測でコードを書いている無駄なコードも多いかと思いますが
17
+ 自分の憶測でコードを書いているため無駄なコードも多いかと思いますが
18
18
  よろしくお願いいたします。
19
19
 
20
20
 

9

修正を入れました

2019/06/15 14:15

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -6,8 +6,9 @@
6
6
  googleカレンダーから空き時間を算出したいです。
7
7
  そのデータをスプレットシートを介さず、直接googleフォームの記述欄の方に出力したいです。
8
8
 
9
+ コード内で
9
- 2週間分の9時から18時の空き時間を出力したいのですが、
10
+ 9時から18時の空き時間を出力したいのですが、
10
- 2週間分の9時から18時のから2週間分の予定時間を引作業に詰まっています。
11
+ 2週間分の9時から18時のから2週間分の予定時間を引き、空き時間を出力する作業に詰まっています。
11
12
 
12
13
  時間を15分単位で取得しているのは時間を揃えることでindexOfやmatchを使うことで削除できると考えたからです。
13
14
  他の解答者のコードや、調べて試してもエラーが出てしまいました。

8

修正を入れました

2019/06/15 14:07

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -4,17 +4,16 @@
4
4
 
5
5
  GASについてです。
6
6
  googleカレンダーから空き時間を算出したいです。
7
- そのデータをスプレットシートを介さず直接googleフォームの記述欄に出力したいです。
7
+ そのデータをスプレットシートを介さず直接googleフォームの記述欄の方に出力したいです。
8
8
 
9
- 現在9時から18時の時間の中で空き時間を出力したいのですが
9
+ 2週間分の9時から18時の空き時間を出力したいのですが
10
- 2週間分の時から2週間分の予定時間を引く作業に詰まっています。
10
+ 2週間分の9時から18時のから2週間分の予定時間を引く作業に詰まっています。
11
- 15分単位で取得しているのは時間を揃えることでindexOfやmatchを使うことで削除できると考えたからです。
12
11
 
12
+ 時間を15分単位で取得しているのは時間を揃えることでindexOfやmatchを使うことで削除できると考えたからです。
13
+ 他の解答者のコードや、調べて試してもエラーが出てしまいました。
13
14
 
14
- 他の解答者のコードや、調べて試してもエラーが出てしまうため
15
- 改善方法を教えていただきたく書き込みました。
16
15
 
17
- 自分の憶測でコードを書いているため無駄なコードも多いかと思いますが
16
+ 自分の憶測でコードを書いている無駄なコードも多いかと思いますが
18
17
  よろしくお願いいたします。
19
18
 
20
19
 

7

修正を入れました

2019/06/15 13:57

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -65,24 +65,24 @@
65
65
  //配列を用意して2週間分の時間を入れる。
66
66
 
67
67
 
68
- var allList =[];
68
+ var allList =[]; //この配列に入っている時間から空き時間を下記に出力したいです。
69
69
  {
70
70
  for (var i = 0; i < 24; i++) {
71
71
  startDate.setDate(startDate.getDate() + 1);
72
72
 
73
73
  //9時から18時までの空き時間をフォームに出力したいので9時から18時にイベントを固定
74
- var ss = startDate.setHours(9, 0, 0, 0);
74
+ var start_Time = startDate.setHours(9, 0, 0, 0);
75
- var yui = new Date(ss);
75
+ var s_Time = new Date(start_Time);
76
- var ll = startDate.setHours(18, 0, 0, 0);
76
+ var end_Time = startDate.setHours(18, 0, 0, 0);
77
- var ert =new Date(ll);
77
+ var e_Time =new Date(end_Time);
78
78
 
79
79
  //予定と同様に15分単位にする
80
- var diffCount = ((((ert - yui)/60)/1000)/15);
80
+ var diffCount = ((((e_Time - s_Time)/60)/1000)/15);
81
- var Time_123 = yui.setMinutes(yui.getMinutes() -15);
81
+ var TimeLIst = s_Time.setMinutes(s_Time.getMinutes() -15);
82
- var Time_345 = new Date(Time_123);
82
+ var TimeList1 = new Date(TimeList);
83
83
 
84
84
  for(j=0;j < diffCount+1;j++){
85
- var gf1 = Time_345.setMinutes(Time_345.getMinutes() +15);
85
+ var gf1 = TimeList1.setMinutes(TimeList1.getMinutes() +15);
86
86
  var gf2 = new Date(gf1);
87
87
  allList.push(gf2);
88
88
  };

6

修正を入れました

2019/06/15 13:45

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,20 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
 
4
- 現在GASを用いて、googleカレンダーから予定の時間をとり空き時間を算出したいのですが
5
- 自分の力不足によりログに出せないでいます。
6
4
 
5
+ GASについてです。
6
+ googleカレンダーから空き時間を算出したいです。
7
+ そのデータをスプレットシートを介さず直接googleフォームの記述欄に出力したいです。
8
+
9
+ 現在9時から18時の時間の中で空き時間を出力したいのですが
10
+ 2週間分の時間から2週間分の予定時間を引く作業に詰まっています。
11
+ 15分単位で取得しているのは時間を揃えることでindexOfやmatchを使うことで削除できると考えたからです。
12
+
13
+
7
14
  他の解答者のコードや、調べて試してもエラーが出てしまうため
8
15
  改善方法を教えていただきたく書き込みました。
9
16
 
17
+ 自分の憶測でコードを書いているため無駄なコードも多いかと思いますが
10
18
  よろしくお願いいたします。
11
19
 
12
20
 
@@ -17,34 +25,30 @@
17
25
  ```
18
26
 
19
27
  ### 該当のソースコード
20
- ```html
28
+ ```JavaScript
21
29
  function abcde() {
22
30
  var myCal=CalendarApp.getCalendarById('Id'); //特定のIDのカレンダーを取得
23
31
  var dt = new Date(); //当日指定
24
- var date = dt.setDate(dt.getDate() + 2); //2日後からイベント日程を取得
32
+ var date = dt.setDate(dt.getDate() + 2); //当日から2日後からイベント日程を取得
25
33
  var startDate = new Date(date); //取得開始日
26
- var dtt = dt.setDate(dt.getDate() + 14);
34
+ var dtt = dt.setDate(dt.getDate() + 14); //2週間後の14日後まで取得
27
35
  var endDate = new Date(dtt);//取得終了日
28
36
 
29
37
  var myEvents=myCal.getEvents(startDate,endDate); //カレンダーのイベントを取得
30
-
31
-
32
-
33
- // フォームに繋げる
38
+
34
- var frmid = "Id"; //フォームのID
39
+ var frmid = "Id"; // フォームに繋げる
35
40
  var frm = FormApp.openById(frmid);
36
41
 
37
42
 
38
43
 
39
- //カレンダーに入っている予定の時間を取得する
44
+ //カレンダーに入っている予定の時間を15分単位で取得する
40
45
 
41
46
  var ngList = [];
42
47
  for (var i in myEvents) {
43
48
  var startTime = myEvents[i].getStartTime();
44
49
  var endTime = myEvents[i].getEndTime();
45
- var diffCount = (((endTime -startTime)/60)/1000)/15;
50
+ var diffCount = (((endTime -startTime)/60)/1000)/15)
46
51
 
47
-
48
52
  var startTime2 = startTime.setMinutes(startTime.getMinutes() -15);
49
53
  var startTime3 = new Date(startTime2);
50
54
 
@@ -58,19 +62,21 @@
58
62
 
59
63
 
60
64
 
61
- //配列を用意して2週間分の予定を入れる
65
+ //配列を用意して2週間分の時間を入れる
62
- //9時から18時にしか予定が入れらないので設定する
66
+
63
67
 
64
68
  var allList =[];
65
69
  {
66
70
  for (var i = 0; i < 24; i++) {
67
71
  startDate.setDate(startDate.getDate() + 1);
68
72
 
73
+ //9時から18時までの空き時間をフォームに出力したいので9時から18時にイベントを固定
69
- var ss = startDate.setHours(9, 0, 0, 0);
74
+ var ss = startDate.setHours(9, 0, 0, 0);
70
75
  var yui = new Date(ss);
71
76
  var ll = startDate.setHours(18, 0, 0, 0);
72
77
  var ert =new Date(ll);
73
78
 
79
+ //予定と同様に15分単位にする
74
80
  var diffCount = ((((ert - yui)/60)/1000)/15);
75
81
  var Time_123 = yui.setMinutes(yui.getMinutes() -15);
76
82
  var Time_345 = new Date(Time_123);
@@ -83,7 +89,7 @@
83
89
  };
84
90
  };
85
91
 
86
-
92
+ //予定時間と日程の時間が15分単位で固定されているため、予定時間を抜き空き時間を算出出来ると考えてコードを書きました。
87
93
  for(var n=0; n<allList.length; n++){
88
94
  //Logger.log(allList[n])
89
95
 
@@ -94,18 +100,19 @@
94
100
  }
95
101
  }
96
102
  }
97
-
98
103
 
104
+ //フォームへの出力はその後に書く予定です
105
+
99
106
  }
100
107
  ```
101
108
  ### 試したこと
102
109
  ```html
103
110
  {
104
-
105
- const schedules = allList.slice(0).map(function(element, index, array)
111
+ //候補の日付の配列から、予定がない日付をフィルタして返す
106
-
107
112
 
108
- //候補の日付の配列から、予定がない日付をフィルタして返す
113
+ const schedules = allList.slice(0).map(function(element, index, array)
114
+
115
+
109
116
  return schedules.filter(function(time, index, array) {
110
117
  return calendars.every(function(cal, ind, arr) {
111
118
  const st = new Date(time);

5

修正を入れました

2019/06/15 13:39

投稿

Illas
Illas

スコア18

title CHANGED
@@ -1,1 +1,1 @@
1
- 配列から指定した予定時間を削除
1
+ 配列から指定した予定時間を削除したいです。
body CHANGED
@@ -1,13 +1,13 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
 
4
+ 現在GASを用いて、googleカレンダーから予定の時間をとり空き時間を算出したいのですが
4
- GASです。
5
+ 自分の力不足よりログに出せないでいます。
5
6
 
6
- googleカレンダーから予定の時間をとり空き時間を算出したいです。
7
-
8
7
  他の解答者のコードや、調べて試してもエラーが出てしまうため
9
8
  改善方法を教えていただきたく書き込みました。
10
9
 
10
+ よろしくお願いいたします。
11
11
 
12
12
 
13
13
  ### 発生している問題・エラーメッセージ

4

修正を入れました

2019/06/14 18:14

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,15 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+
3
4
  GASについてです。
4
- googleカレンダー情報をgoogleフォームに入れる作業をしています。
5
5
 
6
- カレンダーから予定の時間をとり空き時間を算出したいです。
6
+ googleカレンダーから予定の時間をとり空き時間を算出したいです。
7
- 他の解答者のコードや調べて試してもエラーが出てしまうため質問させてください。
8
7
 
8
+ 他の解答者のコードや、調べて試してもエラーが出てしまうため
9
+ 改善方法を教えていただきたく書き込みました。
9
10
 
10
11
 
12
+
11
13
  ### 発生している問題・エラーメッセージ
12
14
 
13
15
  ```

3

修正を入れました

2019/06/14 16:55

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -11,8 +11,7 @@
11
11
  ### 発生している問題・エラーメッセージ
12
12
 
13
13
  ```
14
- ngListのオブジェクトは対応していません
14
+ 構造エラー
15
- indexOfのコードでは時間でのサーチが出来ないのかallListがそのままログとしてでたので変換して行ったのですがうまく行きませんでした。
16
15
  ```
17
16
 
18
17
  ### 該当のソースコード
@@ -88,7 +87,7 @@
88
87
 
89
88
  for(var i=0; i<ngList.length; i++){
90
89
 
91
- if (allList[n]).match(ngList) {
90
+ if (allList[n]).getLocation().match(ngList+i) {
92
91
  allList[n].deleteEvent()
93
92
  }
94
93
  }

2

修正を入れました

2019/06/14 13:56

投稿

Illas
Illas

スコア18

title CHANGED
@@ -1,1 +1,1 @@
1
- 配列から指定したを削除
1
+ 配列から指定した予定時間を削除
body CHANGED
File without changes

1

インデントの修正

2019/06/14 13:23

投稿

Illas
Illas

スコア18

title CHANGED
File without changes
body CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
  // フォームに繋げる
33
- var frmid = "Id; //フォームのID
33
+ var frmid = "Id"; //フォームのID
34
34
  var frm = FormApp.openById(frmid);
35
35
 
36
36
 
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
  for(var n=0; n<allList.length; n++){
87
- /Logger.log(allList[n])
87
+ //Logger.log(allList[n])
88
88
 
89
89
  for(var i=0; i<ngList.length; i++){
90
90