症状
公式のクイックスタートに沿って進める。
しかしエラーが出てうまく行かない。
Error: TypeError: Cannot destructure property 'client_secret' of 'credentials.installed' as it is undefined.
原因
サンプルコードにあるcredentials.json
をクイックスタートの手順で取得する際に、以下ページに誘導される。
ここで、以下3種類のキーの取得方法が紹介されている。
- API key
- OAuth client ID
- Service account
どうやらクイックスタートはこのうち、 OAuth client ID の取得を前提としたサンプルコードになっているようだった。
また、キーを取得する際にアプリケーションの種類を聞かれるが、「デスクトップアプリ」を選択する必要があるようだった。
クイックスタートは OAuth が前提になってくるので、ユーザーによる認証などが必要のないものを作ろうとしている場合はサービスアカウントを利用する方が良さそうです。
サービスアカウントによる認証については、こちらです。
基本的に上記リンクの手順に沿えばできると思いますが、以下が注意点です。
-
環境変数に json のパスを指定しておくと認証はモジュールが勝手にやってくれる。(詳細は上記リンクで)
-
google drive のファイル/フォルダは json 内の client_email のユーザーにアクセス権限がなければ not found になる。(公開している場合は問題ないが、プライベートなファイル/フォルダの場合はアクセス権限を付与する必要がある)