質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.37%
freee

freeeは「会計freee」「人事労務freee」などのSaaSサービスを提供する企業。「スモールビジネスを。世界の主役に。」をミッションに、中小企業向けのバックエンドサービスを提供しています。

freeeAPI

freeeAPIは「会計freee」「人事労務freee」など、freeeが提供する各サービスに実装されている RESTful API です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1942閲覧

freee受発注 APIの発注・受注一覧の取得で404エラーが発生する。

sheisshe

総合スコア1

freee

freeeは「会計freee」「人事労務freee」などのSaaSサービスを提供する企業。「スモールビジネスを。世界の主役に。」をミッションに、中小企業向けのバックエンドサービスを提供しています。

freeeAPI

freeeAPIは「会計freee」「人事労務freee」など、freeeが提供する各サービスに実装されている RESTful API です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2022/01/11 12:44

前提・実現したいこと

freee受発注APIを利用して発注・受注一覧を取得するスクリプトをGoogle Apps Script(GAS)で開発しています。
公式のフォーマットに従ってRequest URLを作成し、リクエストを投げたところ以下エラーが発生しました。

発生している問題・エラーメッセージ

Exception: Request failed for https://deals.secure.freee.co.jp returned code 404. Truncated server response: <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="... (use muteHttpExceptions option to examine full response)

該当のソースコード

コード内事業所IDには存在する事業所のIDを入力しております。

GAS

1function getCompanies() { 2 3 //freeeAPIからアクセストークンを取得 4 const accessToken = getService().getAccessToken(); 5 6 //受発注一覧を取得するリクエストURL 7 const requestUrl = 'https://deals.secure.freee.co.jp/deals?company_id=[事業所ID]&step=&status=&tags='; 8 9 //freeeAPIへのリクエストに付与するパラメータ 10 const params = { 11 method: 'get', 12 headers: { 'Authorization': 'Bearer ' + accessToken } 13 }; 14 15 //リクエスト送信とレスポンス取得 16 const response = UrlFetchApp.fetch(requestUrl, params).getContentText(); 17 console.log(response); 18 19}

試したこと

1.公式リファレンス(https://developer.freee.co.jp/docs/dp/reference#/Deals/get_deals)から作成したRequest URLを入力
結果:上記エラーが発生

2.Request URLを'https://deals.secure.freee.co.jp/deals/orderer?company_id=[事業所ID]&step=&status=&tags=' に変更
結果:対象ページのhtml文が取得できたが、受発注一覧が存在しない

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のようにURLを修正した場合はいかがでしょうか。
(エンドポイントを「https://api.freee.co.jp/dp/deals」に変え、statusやtags等の不要なパラメータは削除)

diff

1function getCompanies() { 2 3 //freeeAPIからアクセストークンを取得 4 const accessToken = getService().getAccessToken(); 5 6 //受発注一覧を取得するリクエストURL 7- const requestUrl = 'https://deals.secure.freee.co.jp/deals?company_id=[事業所ID]&step=&status=&tags='; 8+ const requestUrl = 'https://api.freee.co.jp/dp/deals?company_id=[事業所ID]'; 9 //freeeAPIへのリクエストに付与するパラメータ 10 const params = { 11 method: 'get', 12 headers: { 'Authorization': 'Bearer ' + accessToken } 13 }; 14 15 //リクエスト送信とレスポンス取得 16 const response = UrlFetchApp.fetch(requestUrl, params).getContentText(); 17 console.log(response); 18 19}

原因:そもそも公式ページがバグっている可能性

 
質問文記載の公式ドキュメントのページによると、
APIエンドポイントは
**https://api.freee.co.jp/dp**と記載されています。
イメージ説明

しかし、質問者さんがおこなったように同ページの下にあるアプレットを実行すると、
誤ったURLが表示されます。
イメージ説明

https://deals.secure.freee.co.jp/deals は有効な受発注APIエンドポイントではありません。
・仮に有効な受発注APIエンドポイント(https://api.freee.co.jp/dp/deals)に修正しても、
画像のようにstatusやtagsのパラメータの値を無しにしてGASで実行すると
(例:'https://api.freee.co.jp/dp/deals?company_id=[事業所ID]&step=&status=&tags=')

{"status_code":400,"errors":[{"codes":["invalid_type"],"type":"validate","messages":["status は array で指定してください。"]}]}

というエラーメッセージが返ってきます。
つまり、このアプレットは、有効なAPIエンドポイントも、有効なパラメータ指定も示せていないということになります。

投稿2022/01/11 14:31

編集2022/01/11 14:49
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sheisshe

2022/01/12 23:14

丁寧なご説明ありがとうございます! 無事解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問