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

Q&A

1回答

282閲覧

GASを使った REST 呼出

sab

総合スコア20

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

0グッド

0クリップ

投稿2026/08/06 09:27

0

0

実現したいこと

GAS 経由で InterFAX REST サービスを呼び出したい

発生している問題・分からないこと

GAS 経由で InterFAX REST サービスを呼び出したいのですが、なぜか 401/HTTP になってしまいます。
手元で curl を使って呼び出す事はできますので、id/password の問題ではありません。
javascript の実行もブラウザでは無く google 環境のようで、実際に通信上で何が起きているのか調べる方法が (少なくとも私には) 解りません。

エラーメッセージ

error

1401/HTTP が返されます

該当のソースコード

javascript

1function sendInterfaxFax() { 2 const USERNAME = '***'; 3 const PASSWORD = '***'; 4 5 const url = 'https://rest.interfax.net/outbound/faxes?limit=1'; 6 7 const options = { 8 'method': 'GET', 9 'headers': { 10 'Authorization': 'Basic ' + Utilities.base64Encode(USERNAME + ':' + PASSWORD, Utilities.Charset.UTF_8) 11 }, 12 'cache': 'no-store', 13 'muteHttpExceptions': true 14 }; 15 16 try { 17 const response = UrlFetchApp.fetch(url, options); 18 const responseCode = response.getResponseCode(); 19 const responseBody = response.getContentText(); 20 21 if (responseCode >= 200 && responseCode < 300) { 22 Logger.log('Request Success: ' + responseBody); 23 } else { 24 Logger.log('error status: ' + responseCode); 25 Logger.log('error detail: ' + responseBody); 26 } 27 } catch (e) { 28 Logger.log('exception: ' + e.message); 29 } 30} 31 32sendInterfaxFax();

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

id/password の間違いを指摘する意見ばかりですが、curl の場合でも GAS の場合でもAuthorization ヘッダの値が同じである事は確認済みです。
curl の場合は実施環境で、GASの場合はダミーのサーバを立ててネットワークをキャプチャーし、
SSLKEYLOGFILE を使って通信を複合化して厳密に値が一致する事を確認しています。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答1

0

こんにちは。
まずは以下のようにAcceptで型を明示的に指定するのを試してみるのがいいと思います。
ただ、自分はInterFAX側のWAFでGASのIPが弾かれているケースが怪しいと思っています。
(自分は上記の理由でDiscordのAPIをGASから叩けなかったことがありました)
この場合はCloud Run, AWS lambdaなどで中継する必要がありそうです。

const options = { 'method': 'get', 'headers': { 'Authorization': 'Basic ' + Utilities.base64Encode(USERNAME + ':' + PASSWORD, Utilities.Charset.UTF_8), 'Accept': 'application/json' // 明示的にレスポンス型を指定 }, 'muteHttpExceptions': true // 'cache': 'no-store' は UrlFetchApp 非対応のため削除 };

投稿2026/08/07 09:40

yuyafujiwara

総合スコア133

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問