回答編集履歴
11
test
CHANGED
@@ -57,9 +57,9 @@
|
|
57
57
|
+ let CalendarName = contents[i][calnameNum]; //設定するカレンダー名
|
58
58
|
+ let calender = CalendarApp.getCalendarsByName(CalendarName)[0];
|
59
59
|
+ if (calender == null) {
|
60
|
-
console.log('カレンダー名の列が空欄、またはカレンダーを正常に取得できなかったため、デフォルトのカレンダーに記入します。');
|
60
|
+
+ console.log('カレンダー名の列が空欄、またはカレンダーを正常に取得できなかったため、デフォルトのカレンダーに記入します。');
|
61
|
-
calender = CalendarApp.getCalendarById(gAccount);
|
61
|
+
+ calender = CalendarApp.getCalendarById(gAccount);
|
62
|
-
}
|
62
|
+
+ }
|
63
63
|
|
64
64
|
//「済」っぽいのか、空の場合は飛ばす
|
65
65
|
var status = contents[i][statusCellNum];
|
10
test
CHANGED
@@ -55,7 +55,11 @@
|
|
55
55
|
|
56
56
|
// googleカレンダーの取得
|
57
57
|
+ let CalendarName = contents[i][calnameNum]; //設定するカレンダー名
|
58
|
-
+ let calender = CalendarApp.getCalendarsByName(CalendarName)[0];
|
58
|
+
+ let calender = CalendarApp.getCalendarsByName(CalendarName)[0];
|
59
|
+
+ if (calender == null) {
|
60
|
+
console.log('カレンダー名の列が空欄、またはカレンダーを正常に取得できなかったため、デフォルトのカレンダーに記入します。');
|
61
|
+
calender = CalendarApp.getCalendarById(gAccount);
|
62
|
+
}
|
59
63
|
|
60
64
|
//「済」っぽいのか、空の場合は飛ばす
|
61
65
|
var status = contents[i][statusCellNum];
|
9
test
CHANGED
@@ -14,10 +14,8 @@
|
|
14
14
|
下記のようなコードになるでしょう。
|
15
15
|
|
16
16
|
(仮に、カレンダー名を、A列ではなくJ列に入力する場合は、const lastCol=10 にした上で、
|
17
|
-
const calnameNum = 0;
|
17
|
+
const calnameNum = 0;を
|
18
|
-
を
|
19
|
-
const calnameNum = 9;
|
20
|
-
に変えてください。A列にカレンダー名を入力する場合は変える必要はありません。)
|
18
|
+
const calnameNum = 9;に変えてください。A列にカレンダー名を入力する場合は下記のコードから変える必要はありません。)
|
21
19
|
|
22
20
|
```diff
|
23
21
|
/**
|
8
test
CHANGED
@@ -10,14 +10,14 @@
|
|
10
10
|
※getCalendarsByName の戻り値は「配列」なので、[0]が必要です(カレンダー名に重複がない場合)
|
11
11
|
|
12
12
|
|
13
|
-
題意より、スプレッドシートの**1列目(A列)**に対象のカレンダー名を入力しているという想定だと、
|
13
|
+
題意より、スプレッドシートの**1列目(A列)**に対象のカレンダー名を入力しているという想定だと、
|
14
|
+
下記のようなコードになるでしょう。
|
14
15
|
|
15
|
-
|
16
|
+
(仮に、カレンダー名を、A列ではなくJ列に入力する場合は、const lastCol=10 にした上で、
|
16
17
|
const calnameNum = 0;
|
17
18
|
を
|
18
19
|
const calnameNum = 9;
|
19
|
-
|
20
|
-
に変えてください。
|
20
|
+
に変えてください。A列にカレンダー名を入力する場合は変える必要はありません。)
|
21
21
|
|
22
22
|
```diff
|
23
23
|
/**
|
7
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
題意より、スプレッドシートの**1列目(A列)**に対象のカレンダー名を入力しているという想定だと、下記のようなコードになるでしょう。
|
14
14
|
|
15
|
-
※仮に、J列にカレンダー名を入力している場合は、
|
15
|
+
※仮に、J列にカレンダー名を入力している場合は、const lastCol=10 にした上で、
|
16
16
|
const calnameNum = 0;
|
17
17
|
を
|
18
18
|
const calnameNum = 9;
|
@@ -33,7 +33,7 @@
|
|
33
33
|
const lastCol = 9;
|
34
34
|
|
35
35
|
// 0始まりで列を指定しておく
|
36
|
-
+ const calnameNum = 0; // 追加(1列目[A列]にカレンダー名を入力しているという想定。仮に、J列にカレンダー名を入力している場合は、=0を=9に変える)
|
36
|
+
+ const calnameNum = 0; // 追加(1列目[A列]にカレンダー名を入力しているという想定。仮に、J列にカレンダー名を入力している場合は、=0を=9に変える。さらに上のconst lastCol=9を=10 にする)
|
37
37
|
const statusCellNum = 1;
|
38
38
|
const dayCellNum = 2;
|
39
39
|
const startCellNum = 4;
|
6
念のため全文を表示
test
CHANGED
@@ -10,7 +10,14 @@
|
|
10
10
|
※getCalendarsByName の戻り値は「配列」なので、[0]が必要です(カレンダー名に重複がない場合)
|
11
11
|
|
12
12
|
|
13
|
-
題意より、スプレッドシートの1列目に対象のカレンダー名を入力しているという想定だと、下記のようなコードになるでしょう。
|
13
|
+
題意より、スプレッドシートの**1列目(A列)**に対象のカレンダー名を入力しているという想定だと、下記のようなコードになるでしょう。
|
14
|
+
|
15
|
+
※仮に、J列にカレンダー名を入力している場合は、
|
16
|
+
const calnameNum = 0;
|
17
|
+
を
|
18
|
+
const calnameNum = 9;
|
19
|
+
|
20
|
+
に変えてください。
|
14
21
|
|
15
22
|
```diff
|
16
23
|
/**
|
@@ -26,7 +33,7 @@
|
|
26
33
|
const lastCol = 9;
|
27
34
|
|
28
35
|
// 0始まりで列を指定しておく
|
29
|
-
+ const calnameNum = 0; // 追加(1列目にカレンダー名を入力しているという想定)
|
36
|
+
+ const calnameNum = 0; // 追加(1列目[A列]にカレンダー名を入力しているという想定。仮に、J列にカレンダー名を入力している場合は、=0を=9に変える)
|
30
37
|
const statusCellNum = 1;
|
31
38
|
const dayCellNum = 2;
|
32
39
|
const startCellNum = 4;
|
@@ -51,5 +58,65 @@
|
|
51
58
|
// googleカレンダーの取得
|
52
59
|
+ let CalendarName = contents[i][calnameNum]; //設定するカレンダー名
|
53
60
|
+ let calender = CalendarApp.getCalendarsByName(CalendarName)[0];
|
61
|
+
|
62
|
+
//「済」っぽいのか、空の場合は飛ばす
|
63
|
+
var status = contents[i][statusCellNum];
|
64
|
+
if (
|
65
|
+
status == "済" ||
|
66
|
+
status == "済み" ||
|
67
|
+
status == "OK" ||
|
68
|
+
contents[i][dayCellNum] == ""
|
69
|
+
) {
|
70
|
+
continue;
|
71
|
+
}
|
72
|
+
|
73
|
+
// 値をセット 日時はフォーマットして保持
|
74
|
+
var day = new Date(contents[i][dayCellNum]);
|
75
|
+
var startTime = contents[i][startCellNum];
|
76
|
+
var endTime = contents[i][endCellNum];
|
77
|
+
var title = contents[i][titleCellNum];
|
78
|
+
// 場所と詳細をセット
|
79
|
+
var options = {location: contents[i][locationCellNum], description: contents[i][descriptionCellNum]};
|
80
|
+
|
54
|
-
|
81
|
+
try {
|
82
|
+
// 開始終了が無ければ終日で設定
|
83
|
+
if (startTime == '' || endTime == '') {
|
84
|
+
//予定を作成
|
85
|
+
calender.createAllDayEvent(
|
86
|
+
title,
|
87
|
+
new Date(day),
|
88
|
+
options
|
89
|
+
);
|
90
|
+
|
91
|
+
// 開始終了時間があれば範囲で設定
|
92
|
+
} else {
|
93
|
+
// 開始日時をフォーマット
|
94
|
+
var startDate = new Date(day);
|
95
|
+
startDate.setHours(startTime.getHours())
|
96
|
+
startDate.setMinutes(startTime.getMinutes());
|
97
|
+
// 終了日時をフォーマット
|
98
|
+
var endDate = new Date(day);
|
99
|
+
endDate.setHours(endTime.getHours())
|
100
|
+
endDate.setMinutes(endTime.getMinutes());
|
101
|
+
// 予定を作成
|
102
|
+
calender.createEvent(
|
103
|
+
title,
|
104
|
+
startDate,
|
105
|
+
endDate,
|
106
|
+
options
|
107
|
+
);
|
108
|
+
}
|
109
|
+
|
110
|
+
//無事に予定が作成されたら「済」にする
|
111
|
+
sheet.getRange(topRow + i, 2).setValue("済");
|
112
|
+
|
113
|
+
// エラーの場合(今回はログ出力のみ)
|
114
|
+
} catch(e) {
|
115
|
+
Logger.log(e);
|
116
|
+
}
|
117
|
+
|
118
|
+
}
|
119
|
+
// ブラウザへ完了通知
|
120
|
+
Browser.msgBox("完了");
|
121
|
+
}
|
55
122
|
```
|
5
修正
test
CHANGED
@@ -43,9 +43,13 @@
|
|
43
43
|
|
44
44
|
//予定の一覧を取得
|
45
45
|
var contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues();
|
46
|
+
// var calender = CalendarApp.getCalendarById(gAccount); //削除
|
47
|
+
|
48
|
+
//順に予定を作成(今回は正しい値が来ることを想定)
|
49
|
+
for (i = 0; i <= lastRow - topRow; i++) {
|
46
50
|
|
47
|
-
// googleカレンダーの取得
|
51
|
+
// googleカレンダーの取得
|
48
|
-
+ let CalendarName = contents[i][calnameNum]; //設定するカレンダー名
|
52
|
+
+ let CalendarName = contents[i][calnameNum]; //設定するカレンダー名
|
49
|
-
+ let calender = CalendarApp.getCalendarsByName(CalendarName)[0];
|
53
|
+
+ let calender = CalendarApp.getCalendarsByName(CalendarName)[0];
|
50
54
|
(以下略)
|
51
55
|
```
|
4
後続のコードが誤った綴りのため、エラーにならないように綴りを元に戻す
test
CHANGED
@@ -46,6 +46,6 @@
|
|
46
46
|
|
47
47
|
// googleカレンダーの取得
|
48
48
|
+ let CalendarName = contents[i][calnameNum]; //設定するカレンダー名
|
49
|
-
+ let calend
|
49
|
+
+ let calender = CalendarApp.getCalendarsByName(CalendarName)[0];
|
50
50
|
(以下略)
|
51
51
|
```
|
3
念のため追加した分だけでも正しい綴りに修正
test
CHANGED
@@ -45,7 +45,7 @@
|
|
45
45
|
var contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues();
|
46
46
|
|
47
47
|
// googleカレンダーの取得
|
48
|
-
+ let Calend
|
48
|
+
+ let CalendarName = contents[i][calnameNum]; //設定するカレンダー名
|
49
|
-
+ let calend
|
49
|
+
+ let calendar = CalendarApp.getCalendarsByName(CalendarName)[0];
|
50
50
|
(以下略)
|
51
51
|
```
|
2
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
カレンダー名カレンダーを取得する場合、[CalendarApp.getCalendarsByName](https://developers.google.com/apps-script/reference/calendar/calendar-app#getcalendarsbynamename)
|
1
|
+
カレンダー名を指定してカレンダーを取得する場合、[CalendarApp.getCalendarsByName](https://developers.google.com/apps-script/reference/calendar/calendar-app#getcalendarsbynamename)
|
2
2
|
を使用します。
|
3
3
|
|
4
4
|
例:「テストカレンダー」という名前のカレンダーを取得する場合
|
1
test
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
const lastCol = 9;
|
27
27
|
|
28
28
|
// 0始まりで列を指定しておく
|
29
|
-
+const calnameNum = 0; // 追加(1列目にカレンダー名を入力しているという想定)
|
29
|
+
+ const calnameNum = 0; // 追加(1列目にカレンダー名を入力しているという想定)
|
30
30
|
const statusCellNum = 1;
|
31
31
|
const dayCellNum = 2;
|
32
32
|
const startCellNum = 4;
|