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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

Q&A

解決済

3回答

8582閲覧

Google Apps ScriptからGoogle Cloud Vision APIを通そうとすると、403エラーで弾かれます。

hoozukinome

総合スコア13

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

0グッド

1クリップ

投稿2019/04/13 01:14

前提・実現したいこと

●Google Apps Scriptで、「文字起こし君」を作っています。
(LINEのボットに画像を送るとOCRでテキストにして返してくれるもの)
URL:https://qiita.com/kkdmgs110/items/1f6ec0b955e8e1c9362c

●現在使用しているのは、まだ下記二つのみです。
・Google Apps Script
・Google Apls の「Cloud Vision API」
LINEとかボットなどはコードに組み込んでおらず、APIを通すところで引っかかっています。
書籍版だと「7-5 Google Cloud Vision APIを実行しよう」になります。

●UrlFetchApp.fetchで、403エラーを超えられずにおります。
(403エラーなので、Google Cloud Vision APIの設定の問題だと思うのですが……)

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

「muteHttpExceptions: true,」を設定して、ログで全文表示したエラーです。

{ "error": { "code": 403, "message": "The request is missing a valid API key.", "status": "PERMISSION_DENIED" } } { insertId: "[-から始まる英数字。一応伏せておきます]" labels: {…} logName: "projects/project-id-[個別の数字らしきもの。一応伏せておきます]/logs/script.googleapis.com%2Fconsole_logs" receiveTimestamp: "2019-04-12T23:51:32.639264617Z" resource: {…} severity: "DEBUG" textPayload: "{ "error": { "code": 403, "message": "The request is missing a valid API key.", "status": "PERMISSION_DENIED" } } " timestamp: "2019-04-12T23:51:32.509Z" }

該当のソースコード

今回は関係ないかもしれませんが……。下記部分でリクエストを要求しています。

const visionTextResponse = UrlFetchApp.fetch(visionRequestUrl, { method: "POST", contentType: "application/json", payload: payload, muteHttpExceptions: true, //エラー詳細参照用 })

試したこと

●APIキーに制限を設定。
・アプリケーションの制限:HTTPリファラー にしました。
アドレスはGoogle Apps Scriptの「公開>WEBアプリケーションとして導入」で出るアドレスを指定。 → 変化なし。
・APIの制限:Cloud Vision API に設定。 → 変化なし。

●Google APlsでの支払い情報の設定を確認
・右上の有効化も押して、課金できるようにもしました。

●Google Apps Scriptの認証情報を作り直し。 → 変化なし。

 Google Apls内をいろいろ探してはみたのですが、これ以外に確認できることも思いつかず。

補足情報(FW/ツールのバージョンなど)

使用書籍:独学プログラマーのためのAIアプリ開発がわかる本
(文字起こし君の作り方が載っている本です。書籍の通りにやったつもりではあるのですが、

・色々調べてはみたのですが、これ以上先に進むことができませんでした。
きっかけやヒント、「ここを確認した?」等のちょっとした情報でも構いません。まだ私にできることがあると思うので、お知恵をお貸しいただけると幸いです。

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

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

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

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

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

guest

回答3

0

コードがないのでなんとも言えませんが
請求アカウントとプロジェクトきちんと紐ついていないのではないかなと。

自分の場合、ドライブの画像ファイルを読み込ませていますが、今の所問題ないです。
自分が403エラーでたのは請求アカウントが自分のGCPプロジェクトにきちんと紐ついていなかったケースです。

投稿2019/04/16 13:41

officeforest

総合スコア412

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

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

hoozukinome

2019/05/05 06:42

回答ありがとうございます! 遅くなってすみません……。 今回の私のパターンはびっくりするほど初歩的すぎるミスが原因でした。 今後類似の状態に陥った際には参考にさせて頂きます。ありがとうございました!
guest

0

ベストアンサー

{ "error": { "code": 403, "message": "The request is missing a valid API key.", "status": "PERMISSION_DENIED" } }

[The request is missing a valid API key

](https://translate.google.com/?client=tw-ob#en/ja/The%20request%20is%20missing%20a%20valid%20API%20key)

リクエストに有効なAPIキーがありません

とエラーメッセージに記載されています。
有効なAPIキーを設定しリクエストしてください。

投稿2019/04/13 01:46

Y.H.

総合スコア7914

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

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

hoozukinome

2019/04/13 03:45

回答ありがとうございます。 ただ、大変申し訳ないのですが、ご回答頂いた内容まではわかっているのです。 質問内容に記載した通り、不明点は回避方法になります。 色々試しましたし、APIキーの再設定等も行いましたが、どうしても回避しませんでした。 もしかすると「ここで質問すべきことではない」という意味でご回答頂いたのでしょうか……? そうであれば、お手数ですがその旨明言して頂ければ幸いです。
Y.H.

2019/04/13 03:49

いえ、そういう後ろ向きの指摘などの意味での回答ではありません。 正しいAPIキーを知っているのは質問者さんのみなので、回答は「有効なAPIキーを設定してください」としか答えられないです。
hoozukinome

2019/04/13 04:48

ありがとうございます……! 早とちりしてしまって申し訳ありません。 そして、「正しいAPIキーは本人しかわからない」を信じてもう一度プロジェクトを作って全部やり直してみたところ、なぜだかわかりませんが、動きました! Cloud Vision APIの設定のどれかだとは思うのですが……。 自分で一回やり直したときにはうまくいかなかったので何かが違ったのだとは思うのですが、残していた一回目と二回目の設定を見比べても違いはわからずじまいでした。 原因不明のままで申し訳ありませんが、おかげで先に進めます。 何を信じたらよいのか、どこをやり直せばいいのか、それすらわからなくて迷走していたので、本当に助かりました。お忙しいところ初心者の右往左往にお付き合いいただいてすみません。 本当に、ありがとうございました!
Y.H.

2019/04/13 04:53

いえいえ。何にしろ先に進めるようになり良かったですね!
hoozukinome

2019/04/14 01:38

す、すみません、さっきもう一度やってみたところ、また同エラー(403)再現でした。何も変更していないのですが、律儀に再現です。形状記憶合金みたい……。 「Cloud Vision API」の画面に戻ると「引数が無効です。」……。 そういえば一回目のときも「引数が無効です」が「Cloud Vision API」で出て、それを回避したくて2回目のAPIキーをつくたらなぜか出なくて、両方のAPIキーを試してどちらも403エラー、だったことを思い出しました。原因がまったくわかりません……。 パソコンを変えて、Googleアカウントを新設して試してみます。だめだったら別板立てて質問するかもしれません。OKだったら報告にまいります。 奇麗に終わらずにすみません。
guest

0

自己解決しました。

●結論
・構文ミス。

●相違箇所
・APIキーの「key=」の「=」が抜けていた。下記のラスト。
const visionRequestUrl = 'https://vision.googleapis.com/v1/images:annotate?key= 「ここにAPIキー記述」

 編集している途中でいつのまにか欠けたようです。
まだいくつか原因不明のエラーは噛んでいますが、少なくとも403エラーの原因はこれでした。
修正後は安定して結果が正常に出ます。

 お騒がせ致しました。お忙しい中お知恵をお貸しいただき、ありがとうございました!

投稿2019/05/05 06:40

hoozukinome

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問