回答編集履歴
11
test
CHANGED
@@ -122,7 +122,7 @@
|
|
122
122
|
};
|
123
123
|
var json = UrlFetchApp.fetch(url, options);
|
124
124
|
if (json.getResponseCode() !== 200) {
|
125
|
-
throw Error(json.getContentText());
|
125
|
+
throw new Error(json.getContentText());
|
126
126
|
}
|
127
127
|
|
128
128
|
json = JSON.parse(json);
|
@@ -159,7 +159,7 @@
|
|
159
159
|
};
|
160
160
|
var json = UrlFetchApp.fetch(url, options);
|
161
161
|
if (json.getResponseCode() !== 200) {
|
162
|
-
throw Error(json.getContentText());
|
162
|
+
throw new Error(json.getContentText());
|
163
163
|
}
|
164
164
|
|
165
165
|
console.log('画像のアップロードが完了しました。');
|
@@ -181,7 +181,7 @@
|
|
181
181
|
|
182
182
|
var json = UrlFetchApp.fetch(url, options);
|
183
183
|
if (json.getResponseCode() !== 200) {
|
184
|
-
throw Error(json.getContentText());
|
184
|
+
throw new Error(json.getContentText());
|
185
185
|
}
|
186
186
|
|
187
187
|
console.log('リッチメニューの設定が完了しました。');
|
10
test
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
→ しかし、④を実行する時点では、**① で発行したリッチメニューIDに紐づいた画像データ**がアップロードされていません。この結果、質問文にあるようなエラーが発生します。
|
17
17
|
getRichmenu を実行する前に、setImage_Richmenu 関数をエディタから実行されているかもしれません。
|
18
|
-
しかし、リッチメニューID は `https://api.line.me/v2/bot/richmenu` への POST 毎に異なるIDが発行されます。
|
18
|
+
しかし、リッチメニューID は `https://api.line.me/v2/bot/richmenu` への **POST 毎に異なるIDが発行されます**。
|
19
19
|
すなわち、getRichmenu 関数を実行したときに75行目で発行されるリッチメニューIDと、setImage_Richmenu を実行したときに75行目で発行されるリッチメニューIDは別のIDになるため、各関数を別々に実行するとうまく設定できません。
|
20
20
|
|
21
21
|
##### 対応
|
9
test
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
setImage_Richmenu
|
30
30
|
↓
|
31
31
|
getRichmenu
|
32
|
-
の各関数を、1つの実行フェーズ内で順番に実行します。それぞれの関数に、取得したリッチメニューIDを引数として渡すことで、リッチメニューIDの整合性がとれるようにします。
|
32
|
+
の各関数を main という関数にまとめ、1つの実行フェーズ内で順番に実行するようにします。それぞれの関数に、取得したリッチメニューIDを引数として渡すことで、リッチメニューIDの整合性がとれるようにしています。
|
33
33
|
|
34
34
|
(関数外にある 75・76行目は削除)
|
35
35
|
(質問文内のコード 80行目 URLの先頭にある半角スペースを削除)
|
8
test
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
setImage_Richmenu
|
30
30
|
↓
|
31
31
|
getRichmenu
|
32
|
-
を
|
32
|
+
の各関数を、1つの実行フェーズ内で順番に実行します。それぞれの関数に、取得したリッチメニューIDを引数として渡すことで、リッチメニューIDの整合性がとれるようにします。
|
33
33
|
|
34
34
|
(関数外にある 75・76行目は削除)
|
35
35
|
(質問文内のコード 80行目 URLの先頭にある半角スペースを削除)
|
7
test
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
おそらく、それぞれの関数を1回1回別個に実行しており、そのうち「 getRichmenu 」をエディタで実行した場合に上記のエラーが出て「登録できない」と悩まれているのだと推測します。
|
2
2
|
|
3
3
|
##### エラーが発生する原因
|
4
|
-
|
4
|
+
エディタ上で getRichmenu を指定して実行した時の処理の流れは、下記のようになっています。
|
5
|
-
|
5
|
+
ポイントは、75・76行目が関数の外にある点です。
|
6
6
|
① 最初に、75行目 の `let response = createRichMenu()` が実行され、リッチメニューのレイアウトがアップロードされます。そして createRichMenu 関数からリッチメニューのIDが返され、グローバルスコープで宣言された変数 response に格納されます。
|
7
7
|
|
8
8
|
② 76行目が実行され、リッチメニューのIDがコンソールに表示されます。
|
6
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
→ しかし、④を実行する時点では、**① で発行したリッチメニューIDに紐づいた画像データ**がアップロードされていません。この結果、質問文にあるようなエラーが発生します。
|
17
17
|
getRichmenu を実行する前に、setImage_Richmenu 関数をエディタから実行されているかもしれません。
|
18
18
|
しかし、リッチメニューID は `https://api.line.me/v2/bot/richmenu` への POST 毎に異なるIDが発行されます。
|
19
|
-
すなわち、getRichmenu 関数を実行したときに発行されるリッチメニューIDと、setImage_Richmenu を実行したときに発行されるリッチメニューIDは別のIDになるため、各関数を別々に実行するとうまく設定できません。
|
19
|
+
すなわち、getRichmenu 関数を実行したときに75行目で発行されるリッチメニューIDと、setImage_Richmenu を実行したときに75行目で発行されるリッチメニューIDは別のIDになるため、各関数を別々に実行するとうまく設定できません。
|
20
20
|
|
21
21
|
##### 対応
|
22
22
|
各関数を別々に実行する場合は、console に表示されるリッチメニューIDをコピペして、コードに直接貼り付けて実行するという運用でもよいですが、面倒だと思います。
|
5
test
CHANGED
@@ -184,7 +184,6 @@
|
|
184
184
|
throw Error(json.getContentText());
|
185
185
|
}
|
186
186
|
|
187
|
-
json = JSON.parse(json);
|
188
187
|
console.log('リッチメニューの設定が完了しました。');
|
189
188
|
}
|
190
189
|
```
|
4
test
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
(質問文内のコード 80行目 URLの先頭にある半角スペースを削除)
|
36
36
|
(その他細かいところを修正しています)
|
37
37
|
|
38
|
-
実行する際は、エディタから main 関数を指定して実行してください。
|
38
|
+
実行する際は、エディタから main 関数を指定して実行してください。main以外の関数(createRichMenu や setImage_Richmenu など)を個別に実行する必要はありません。
|
39
39
|
```js
|
40
40
|
const drive_fileId = '**********'; // メニューに使用する画像ファイルのIDを指定
|
41
41
|
const ACCESS_TOKEN = '***********'; // bot のアクセストークンを指定
|
@@ -188,4 +188,4 @@
|
|
188
188
|
console.log('リッチメニューの設定が完了しました。');
|
189
189
|
}
|
190
190
|
```
|
191
|
-
|
191
|
+
|
3
test
CHANGED
@@ -18,12 +18,12 @@
|
|
18
18
|
しかし、リッチメニューID は `https://api.line.me/v2/bot/richmenu` への POST 毎に異なるIDが発行されます。
|
19
19
|
すなわち、getRichmenu 関数を実行したときに発行されるリッチメニューIDと、setImage_Richmenu を実行したときに発行されるリッチメニューIDは別のIDになるため、各関数を別々に実行するとうまく設定できません。
|
20
20
|
|
21
|
-
##### 対応
|
21
|
+
##### 対応
|
22
22
|
各関数を別々に実行する場合は、console に表示されるリッチメニューIDをコピペして、コードに直接貼り付けて実行するという運用でもよいですが、面倒だと思います。
|
23
23
|
別案として、リッチメニューの登録から画像アップロード、ユーザー設定まで一括して行うやり方が考えられます。
|
24
24
|
|
25
25
|
|
26
|
-
#####
|
26
|
+
##### コード例
|
27
27
|
createRichMenu
|
28
28
|
↓
|
29
29
|
setImage_Richmenu
|
2
test
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
---
|
15
15
|
|
16
|
-
→ しかし、④を実行する時点では、画像データがアップロードされて
|
16
|
+
→ しかし、④を実行する時点では、**① で発行したリッチメニューIDに紐づいた画像データ**がアップロードされていません。この結果、質問文にあるようなエラーが発生します。
|
17
17
|
getRichmenu を実行する前に、setImage_Richmenu 関数をエディタから実行されているかもしれません。
|
18
18
|
しかし、リッチメニューID は `https://api.line.me/v2/bot/richmenu` への POST 毎に異なるIDが発行されます。
|
19
19
|
すなわち、getRichmenu 関数を実行したときに発行されるリッチメニューIDと、setImage_Richmenu を実行したときに発行されるリッチメニューIDは別のIDになるため、各関数を別々に実行するとうまく設定できません。
|
1
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
を1回で済ませます。それぞれの関数に、取得したリッチメニューIDを引数として渡すことで、リッチメニューIDの整合性がとれるようにします。
|
33
33
|
|
34
34
|
(関数外にある 75・76行目は削除)
|
35
|
-
(80行目 URLの先頭にある半角スペースを削除)
|
35
|
+
(質問文内のコード 80行目 URLの先頭にある半角スペースを削除)
|
36
36
|
(その他細かいところを修正しています)
|
37
37
|
|
38
38
|
実行する際は、エディタから main 関数を指定して実行してください。
|