LookerとGASでお仕事改善❤️入門編!
この記事はLooker Advent Calendar 2020 22日目用の記事です。
こんにちLooker!
BI研究所の、みけ BI スキーです。
今回は、Lookerを導入する一つのメリット、APIをGASから叩いてみます。
API叩けるって、どんな価値があるの?
APIが多く用意されている、ということは、社内ツール/ワークフローのハブ基盤として便利ということです。分析のみ案件の場合はこのメリットを享受にしくいですが、今や多くの現場でデータ活用は業務フローに組み込まれていることが多いので(もちろんあなたの現場でもそうあるべきです!)ここが手軽なのはとっても大事な特徴です。
しっかりとしたデータ連携として作るならPythonで、かっちりした社内ツールならKintoneから、非エンジニアならZapierなんかを使うことが想定されますが、ここではある部署で軽く使うツールを想定してGoogleAppScriptでAPIをいじってみます。
GoogleAooScriptでAPIを叩けると何がいいの?
言ってしまえば、エンドユーザーにLookerを直接触ってもらう必要がなくなる、ということがあります。現場によっては、データマートや可視化をエンドユーザーが触るのは最小限だけど、連携先/連携時間はちょこちょこエンドユーザー手動で変えたいということがあります。そのためにLookerユーザーを増やしたり、エンジニアの工数を取らすのはもったいないですよね?
また、結局報告の定型テンプレートにデータを(手動で)転記したり、するんだよねえ、という現場もあると思います。そんなときに、GoogleSpreadSheetやGoogleSlideをGASで自動生成することが可能になります。怠惰最高!
APIを叩く基本的な手順
基本的流れは
0. ユーザー管理画面で、client_idとclient_secretを発行しておく
1. client_idとclient_secretを投げてアクセストークンをもらう
2. アクセストークンを使って各種APIをキックする
の二段階です。
コード
雑雑ですが、まずはaccess_tokenを取得する関数を作っておきます。
function get_access_token(base_url,client_id,client_secret){
base_url += '/api/3.1/login?client_id=';
base_url += client_id;
base_url += '&client_secret=';
base_url += client_secret;
var options =
{
"method" : "post"
};
var response = UrlFetchApp.fetch(base_url,options);
var o = JSON.parse(response.getContentText());
return(o.access_token)
}
この後は、例えばスケジュール一覧をとってくるなら以下みたいな感じです。
スケジュール一覧はgetで取れます。
function main(){
//プロパティにでも埋め込むと楽
const base_url = '####';
const client_id = '####';
const client_secret = '####';
access_token = get_access_token(base_url,client_id,client_secret);
base_url += '/api/3.0/scheduled_plans?access_token=';
base_url += access_token;
response = UrlFetchApp.fetch(base_url);
plans = JSON.parse(response.getContentText());
//あとはループを回して書き込むなりお好きに。
}
おまけですが、スケジュールをアップデートしたい場合はちょっと面倒です。
簡易コードですが、最小限以下の手順が必要です。
//url自体はシンプル
update_url = '{base_url}/api/3.0/scheduled_plans/{id}?access_token={access_token}';
//ただし、更新に必要な情報は多いのでドキュメントとにらめっこが必要
var update_param = {
"name":"test",
"look_id":"####",
"crontab":"0 0 * * 1",
"require_results":"True",
"require_no_results":"False",
"require_change":"False",
"scheduled_plan_destination":[
{
"format":"json",
"type":"email",
"address":"####"
}
]
};
//patchで投げる
var params = {
"method":"patch",
"payload":JSON.stringify(update_param)
};
UrlFetchApp.fetch(update_url,params);
終わりに
BIツール入れたのに、結局業務が増えた!って現場も多いと思うんですよね。もちろん人を増やしていくことで、どうにかするというマンパワー万歳な現場もあると思いますが、やっぱり自動でやっていきたいなーという文化ならLookerはFitすると思いますよ!
ちなみに、GAS用のスクリプトを公開してくださっている人もいますので、こちらもぜひご参考にしてくださいね。
https://github.com/brechtv/looker_google_sheets
それでは!
この記事が気に入ったらサポートをしてみませんか?