ApexからGoogle Drive API, SpreadSheet APIを叩くAPIクライアントのサンプル書いてみたので備忘録。
サンプルはこちら https://github.com/tzmfreedom/apex_google_api
事前準備
- GoogleのAPIを設定
- Developer ConsoleからGoogle Drive API, SpreadSheet APIを有効化
- OAuth2.0クライアントIDを作成
- 認証プロバイダを作成
- クライアントID/シークレットはGoogle Developer Consoleで取得したものを利用
- 承認エンドポイントAPI =>
https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force
- access_typeとapproval_promptを入れないとrefresh token取得できないので注意 (初回であればapproval_promptを入れなくても良いが2回目以降の認可をする場合は必要)
- トークンエンドポイントAPI =>
https://oauth2.googleapis.com/token
- named credential(指定ログイン情報)の作成
- ↑の認証プロバイダを指定
- スコープ =>
https://www.googleapis.com/auth/drive openid email
- Drive APIのURLは
https://www.googleapis.com
- SpreadSheet APIのURLは
https://sheets.googleapis.com
- 参考: https://qiita.com/sikj/items/1b0f51d3f9f119dc322c
サンプルのAPIクライアントの使い方
Drive API
フォルダの作成
GoogleDriveAPIClient client = new GoogleDriveAPIClient();
GoogleDriveCreateResponse response = client.createFolder('FolderName', 'ParentID');
ファイルのコピー
GoogleDriveCreateResponse response = client.copyFile('SourceID', 'DestFileName', 'ParentID');
SpreadSheet API
スプレッドシートの値を更新
SpreadSheetAPIClient client = new SpreadSheetAPIClient();
List<SpreadSheetUpdateValue> values = new List<SpreadSheetUpdateValue>();
values.add(new SpreadSheetUpdateValue('シート1!A1:D5', new List<List<Object>>{
new List<Object>{
1,
2,
3,
4
},
new List<Object>{
11,
22,
33,
44
}
}));
client.updateValues('xxx', values);