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

それでは!

この記事が気に入ったらサポートをしてみませんか?