回答編集履歴

10

 

2022/09/19 07:37

投稿

退会済みユーザー
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

  

2022/09/19 07:36

投稿

退会済みユーザー
test CHANGED
@@ -18,11 +18,18 @@
18
18
  これによって data に指定された内容が POST リクエストされます。
19
19
  (request_body_json.encode() によって文字列をバイト列に変換している理由は、urllib.request.Request 関数の data には文字列を直接渡せないからだと考えられます。)
20
20
 
21
- これと同様の機能をGASで実現させる場合、UrlFetchApp.fetch 関数の option 引数に、method: 'post' を指定すとともに
21
+ これと同様の機能を GASUrlFetchApp.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

 

2022/09/19 07:22

投稿

退会済みユーザー
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

 

2022/09/19 07:21

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
- 下記のように UrlFetchApp.fetch 関数の option に payload プロパティを指定してみてはいかがでしょうか。
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

 

2022/09/19 07:19

投稿

退会済みユーザー
test CHANGED
@@ -26,7 +26,9 @@
26
26
  ---
27
27
 
28
28
  まとめると、
29
+
29
- エラーの推定原因:現状のコードだと、payload が欠如しているため、認証に必要なデータがエンドポイントにきちんとわたっていません。
30
+ + 認証がうまくできない原因:現状のコードだと、payload が欠如しているため、認証に必要なデータがエンドポイントにきちんとわたっていません。
30
- 解決策:     payload プロパティに、認証に必要なデータを指定します。
31
+ + 解決策:payload プロパティに、認証に必要なデータを指定す
32
+
31
33
  ということになります。
32
34
 

5

 

2022/09/19 07:17

投稿

退会済みユーザー
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

 

2022/09/19 07:15

投稿

退会済みユーザー
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

 

2022/09/19 07:12

投稿

退会済みユーザー
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() 文字列をバイト列に変換している理由は、urllib.request.Request 関数の data には文字列を直接渡せないからと考えられます。)
16
+ (request_body_json.encode() によって文字列をバイト列に変換している理由は、urllib.request.Request 関数の data には文字列を直接渡せないからと考えられます。)
17
17
 
18
18
  これと同様の機能をGASで実現させる場合、UrlFetchApp.fetch 関数の option 引数に、method: 'post' を指定するとともに、
19
+ payload にエンドポイントに渡すペイロードを指定します。
19
- payload にエンドポイントに渡すペイロードを指定します。GASでは文字列、「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
20
+ GAS では payload に「文字列、バイト配列、blob、JavaScript オブジェクトのいずれかを使用可能」とされています。
20
21
  https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
21
22
 

2

 

2022/09/19 07:11

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
  "data": request_body_json,
5
5
  "headers": http_headers,
6
6
  "method": method,
7
- "payload": request_body_json // 追加
7
+ "payload": request_body_json // 追加
8
8
  });
9
9
  ```
10
10
 

1

 

2022/09/19 07:10

投稿

退会済みユーザー
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
- https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters
21
+