GoogleJsonResponseException: API call to analytics.data.ga.get failed with error: Request had insufficient authentication scopes.getGoogleAnalyticsと戦う

Googleスプレッドシートに書き出すために使っていたGoogle App Script(GAS)で順調に動いていたGoogle AnalyticsのAPI analytics.data.ga.get()がスプレッドシートをコピーして使おうと思ったらエラーを吐くようになった。(ReferenceError: Analytics is not defined)

いろいろ設定間違えていたのかしらとサービスにGoogleAnalyticsを追加したところ、エラーは変わったものの以下のエラーが消えない。

GoogleJsonResponseException: API call to analytics.data.ga.get failed with error: Request had insufficient authentication scopes.getGoogleAnalytics

ググっても同じような人はいない(いても謎のコマンド書いてる)ようで、どうやら自力でなんとかするしかなさそうだ。

authentication scopes という文字から権限の認証がうまく行っていないということは分かるのだがどこで何を確認したらいいか分からなかった。調べ出して3時間ようやく糸口を掴んだ。

MyAccount.google.com/permissionsへ移動するとGoogleアカウントのアクセス状況を確認することができるようだ。

MyAccount.google.com/permissions

確認してみたところ、権限を追加したと思っていたGASのデータのGoogle Analyticsがいない。どうやって追加するのだろうか。

試行錯誤:アプリを削除してもう一度権限を付与する

MyAccount.google.com/permissionsでコピーデータの権限を削除できたので、消してもう一度追加をこころみてみた。がしかし、Google Analyticsがいない。

どうすれば、ここにAnalyticsがでてくるのだろう?今まで勝手に実行してくれていたのだから検討もつかない。

ググってもサービスにAnalyticsがあればOKみたいな雰囲気でここにアナリティクスを表示させる方法は見つからなかった。

試行錯誤(解決):Appscriptを削除して作り直す

今度はAppScriptを削除してやろうと思います。

https://script.google.com/home/all からスプレッドシートで使っていたAppscriptを削除します。(作成したコードはコピーしておく)

削除したらスプレッドシートの「拡張機能」→「app script」で再びApp Scriptを作成します。

元のスクリプトを貼り付けて、サービスにGoogle Analytics APIを追加し、再び「実行」をクリックし権限認証に挑みます。

でてきました、Google アナリティクスの文字!!長かった。

おわり

なぜGoogle Analyticsがアクセス権限に出て来なくなったのかはわかりませんが(コピー元ではGCPを絡めてたのが悪さしたのか)、スプレッドシートを複製するときはApp Script作り直した方が無難というあまりスッキリしない解決方法を学びました。先に進めたのでよしとしよう。