公式コードを動かすまでを解説github.com自力でやるには、spreadsheetの認証周りが結構大変なので、サンプルコードを最大限再利用するのがオススメ。先に手順を説明した後に解説する。操作したいspreadsheetは事前に作成してIDをメモしておく。CLIは事前にインストールしておく。アクセスするとOAuth認証が実行される。これは一度だけ実行すれば良い。Databaseの変更をフックしてSpreadSheet書き込みが実行される。解説編OAuth2詳細な解説は後日書きたい。大雑把に言うと、あるサービスのリソースをそのサービスのID/credentialを譲渡せずに第三者が利用可能になるよう認可するようなサービス。最終的に、spreadsheetAPIへのアクセストークンが発行されればゴール。部分で一度だけ実行すればいいと言うのは、一回認可すればトークンが発行され、以後そのトークンを使ってAPIを利用できるからである。言うオプションが入っている。Hostingのドメインにしている。こんなことをするかというと、OAuth時のリダイレクト先のURLが認証済みドメインである必要があるためである。functionが呼び出される。OAuth2認証・認可を行い、spreadsheetAPI用のトークンを取得。そのトークンを保存する処理を/oauthcallbackで実行する。このコールバック処理がどこでも実行されてしまうのは困るわけだから、事前に登録されたドメインのみに制限されている。なっており、このドメインはGCPのデフォルトで承認されていないようである。projectに登録.cloudfunctions.netを登録済みドメインにredirectがあるわけだが、GCPコンソールでの操作が最小限で済む後者をサンプルコードでは採用している。rewriteを使って転送している。functionsの両者がデプロイ対象になる。./funcitons/index.jsまず実装されている関数を整理すると以下の通りとなる。functionで実行管理されるものとなる。authgoogleapiとoauthcallbackは、OAuthに使われるエンドポイントである。appendrecordtospreadsheetがspreadsheet書き込みの関数になる。databaseの要素追加でフックしている。OAuth用のクライアントIDとクライアントシークレットは、cloudfunctionの環境変数に設定してあるので(config:setのコマンド)、関数実行時に取得できる。tokenは初期状態ではもちろん存在しない。databaseに保存している。次回実行以降はそこから読み出すようにしている。処理実行の本体はappendrecordtospreadsheet()関数である。APIの実行には、clientインスタンスが必要だが、これをgetAuthorizedClient()で取得している。最終的にPromissをreturnしているが、これはcloudfunctionの要件である。ちなみにasyncを使っているので、Nodeのバージョンは8以降でないといけない。}を追加しておく必要がある。要はOAuth2をgoogleapiを使って実装するということである。APIとかを調べるので大変で、更にgoogleapiでOAuthの部分を調べて実装するコストを考えると、せっかく本家のコードがあるんでこれを丸っと使わない手はないだろうと言う感じで、今回の手法となった。はてなブログPro仮想化系ITエンジニア。技術と本と運動をこよなく好む。komee.org引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。