回答編集履歴
10
test
CHANGED
@@ -32,4 +32,6 @@
|
|
32
32
|
自分のアプリケーションがどのようなリクエストを送っているかについては httpbin.org というサイトで調べることが可能です。
|
33
33
|
https://qiita.com/sameyasu/items/adacceb8a1bee893599b
|
34
34
|
|
35
|
+
httpbin.org に対して HTTP リクエストを送ると、自分の送った内容がそのままレスポンスとして返ってきます。
|
36
|
+
|
35
37
|
たとえば本件の場合、endpoint に「https://httpbin.org/post」 を指定してみることで、POSTリクエストの内容を検証することが可能です。
|
9
test
CHANGED
@@ -18,11 +18,18 @@
|
|
18
18
|
これによって data に指定された内容が POST リクエストされます。
|
19
19
|
(request_body_json.encode() によって文字列をバイト列に変換している理由は、urllib.request.Request 関数の data には文字列を直接渡せないからだと考えられます。)
|
20
20
|
|
21
|
-
これと同様の機能をGAS
|
21
|
+
これと同様の機能を GAS の UrlFetchApp.fetch 関数で実現させる場合、
|
22
|
-
**payload** に
|
22
|
+
エンドポイントに渡すデータを **payload** に指定します。
|
23
|
+
(もちろん、POST リクエストを行うためには `method:'POST'` の指定も必要です。)
|
24
|
+
|
23
|
-
なお、GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
|
25
|
+
なお、GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされていますので、ここでバイト列に変換する必要はありません。
|
24
26
|
|
25
27
|
参照:
|
26
28
|
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
|
27
29
|
|
30
|
+
---
|
28
31
|
|
32
|
+
自分のアプリケーションがどのようなリクエストを送っているかについては httpbin.org というサイトで調べることが可能です。
|
33
|
+
https://qiita.com/sameyasu/items/adacceb8a1bee893599b
|
34
|
+
|
35
|
+
たとえば本件の場合、endpoint に「https://httpbin.org/post」 を指定してみることで、POSTリクエストの内容を検証することが可能です。
|
8
test
CHANGED
@@ -19,8 +19,10 @@
|
|
19
19
|
(request_body_json.encode() によって文字列をバイト列に変換している理由は、urllib.request.Request 関数の data には文字列を直接渡せないからだと考えられます。)
|
20
20
|
|
21
21
|
これと同様の機能をGASで実現させる場合、UrlFetchApp.fetch 関数の option 引数に、method: 'post' を指定するとともに、
|
22
|
-
payload にエンドポイントに渡すペイロードを指定します。
|
22
|
+
**payload** にエンドポイントに渡すペイロードを指定します。
|
23
|
-
GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
|
23
|
+
なお、GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
|
24
|
+
|
25
|
+
参照:
|
24
26
|
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
|
25
27
|
|
26
28
|
|
7
test
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
下記のように
|
1
|
+
下記のように data ではなく、payload プロパティに request_body_json を指定してみてはいかがでしょうか。
|
2
2
|
```js
|
3
3
|
const resp = UrlFetchApp.fetch(endpoint, {
|
4
|
-
"data": request_body_json,
|
4
|
+
// "data": request_body_json, // 削除
|
5
5
|
"headers": http_headers,
|
6
6
|
"method": method,
|
7
7
|
"payload": request_body_json // 追加
|
@@ -23,12 +23,4 @@
|
|
23
23
|
GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
|
24
24
|
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
|
25
25
|
|
26
|
-
---
|
27
26
|
|
28
|
-
まとめると、
|
29
|
-
|
30
|
-
+ 認証がうまくできない原因:現状のコードだと、payload が欠如しているため、認証に必要なデータがエンドポイントにきちんとわたっていません。
|
31
|
-
+ 解決策:payload プロパティに、認証に必要なデータを指定する。
|
32
|
-
|
33
|
-
ということになります。
|
34
|
-
|
6
test
CHANGED
@@ -26,7 +26,9 @@
|
|
26
26
|
---
|
27
27
|
|
28
28
|
まとめると、
|
29
|
+
|
29
|
-
|
30
|
+
+ 認証がうまくできない原因:現状のコードだと、payload が欠如しているため、認証に必要なデータがエンドポイントにきちんとわたっていません。
|
30
|
-
解決策:
|
31
|
+
+ 解決策:payload プロパティに、認証に必要なデータを指定する。
|
32
|
+
|
31
33
|
ということになります。
|
32
34
|
|
5
test
CHANGED
@@ -23,3 +23,10 @@
|
|
23
23
|
GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
|
24
24
|
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
|
25
25
|
|
26
|
+
---
|
27
|
+
|
28
|
+
まとめると、
|
29
|
+
エラーの推定原因:現状のコードだと、payload が欠如しているため、認証に必要なデータがエンドポイントにきちんとわたっていません。
|
30
|
+
解決策: payload プロパティに、認証に必要なデータを指定します。
|
31
|
+
ということになります。
|
32
|
+
|
4
test
CHANGED
@@ -12,6 +12,9 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
python 側のコードでは、urllib.request.Request 関数の引数 data に、 「request_body_json をバイト列に変換したもの」が指定されています。
|
15
|
+
```python
|
16
|
+
req = urllib.request.Request(endpoint, data=request_body_json.encode(), headers=http_headers, method=method)
|
17
|
+
```
|
15
18
|
これによって data に指定された内容が POST リクエストされます。
|
16
19
|
(request_body_json.encode() によって文字列をバイト列に変換している理由は、urllib.request.Request 関数の data には文字列を直接渡せないからだと考えられます。)
|
17
20
|
|
3
test
CHANGED
@@ -11,11 +11,12 @@
|
|
11
11
|
---
|
12
12
|
|
13
13
|
|
14
|
-
python 側のコードでは、urllib.request.Request 関数の引数 data に request_body_json をバイト列に変換したもの
|
14
|
+
python 側のコードでは、urllib.request.Request 関数の引数 data に、 「request_body_json をバイト列に変換したもの」が指定されています。
|
15
15
|
これによって data に指定された内容が POST リクエストされます。
|
16
|
-
(request_body_json.encode()
|
16
|
+
(request_body_json.encode() によって文字列をバイト列に変換している理由は、urllib.request.Request 関数の data には文字列を直接渡せないからだと考えられます。)
|
17
17
|
|
18
18
|
これと同様の機能をGASで実現させる場合、UrlFetchApp.fetch 関数の option 引数に、method: 'post' を指定するとともに、
|
19
|
+
payload にエンドポイントに渡すペイロードを指定します。
|
19
|
-
payload に
|
20
|
+
GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
|
20
21
|
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
|
21
22
|
|
2
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
"data": request_body_json,
|
5
5
|
"headers": http_headers,
|
6
6
|
"method": method,
|
7
|
-
"payload":
|
7
|
+
"payload": request_body_json // 追加
|
8
8
|
});
|
9
9
|
```
|
10
10
|
|
1
test
CHANGED
@@ -18,4 +18,4 @@
|
|
18
18
|
これと同様の機能をGASで実現させる場合、UrlFetchApp.fetch 関数の option 引数に、method: 'post' を指定するとともに、
|
19
19
|
payload にエンドポイントに渡すペイロードを指定します。GASでは文字列、「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
|
20
20
|
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
|
21
|
-
|
21
|
+
|