LookerStudioからぽちぽちCSVダウンロードはしんどすぎる(自動化しましょう)
え、Looker StudioってAPIでデータ抜けないの?
あれこれサクッと見るのに便利なGoogle Looker Studioですが、
そのデータを定期的に抜きたいなーって時ありませんか?
1つ、2つであればポチーで済みますが、
それが何十個もあったら発狂もんです。
そこでふと思うのはAPIから取ってくりゃいいじゃんと思いますが、LookerStudioのAPIは基本データ抜くのが苦手なのでその方法も取れません。
じゃ、じゃあ元のデータを参照したらいいじゃん!!
元のデータを参照する権限はあなたになくしかも与えてもらえません。。
あなたにはBookmarkletがある
ぽちぽちするしかない?
いえ、あなたにはまだコンソールでのJS実行が残されています
開発者ツール開いて、あらかじめ取っておいたJS貼り付けてー・・
ちょっとめんどくさくありません?
そこでBookmarkletの出番です
(まぁBookmarklet自体は使い古されたネタとは思いますが、LookerStudio使いには残された最後の希望なのです)
ここでBookmarkletってなんやねん?って方のためにおさらいです
Bookmarkletの基礎
Bookmarkletとは?
Bookmarkletとは、ウェブブラウザで使用する小さなJavaScriptプログラムを指します。これは、通常のブックマークと同じようにブラウザのブックマークバーに保存できますが、ウェブページのURLを保存するのではなく、JavaScriptコードを含んでいます。
Bookmarkletの特徴:
即座に実行可能: ブックマークバーに保存しておくことで、任意のウェブページ上でクリック一つでスクリプトを実行できます。
カスタム機能の追加: 特定のウェブページで繰り返し行う動作や、ブラウザに標準装備されていない機能を簡単に追加できます。
使用の簡単さ: 専門的なプログラミングスキルがなくても、他人が作成したBookmarkletを利用することができます。
ポータビリティ: ほとんどの主要なウェブブラウザで動作します。
こんな感じにブックマークにいます
でこれをポチーと実行すると設定しておいたJSが動くわけですね
登録のしかたは普通のBookmarkと同じですが、URLにJSを書くだけです
LookerstudioからCSVエクスポートするヤーツ
で今回のお題であるLookerのCSVエクスポートはこんなスクリプト組んでいます
javascript:(function () {
(async function() {
var elements = document.getElementsByClassName('centerHeaderRow');
for (var i = 0; i < elements.length; i++) {
var colName = elements[i].getElementsByClassName('colName')[0].innerText;
var event = new MouseEvent("contextmenu", { bubbles: true, cancelable: true });
elements[i].dispatchEvent(event);
var expElements = document.getElementsByClassName('mat-mdc-menu-item-text');
await new Promise(resolve => setTimeout(resolve, 100));
if(expElements){
for (var j = 0; j < expElements.length; j++) {
if(expElements[j].innerText == "エクスポート"){
expElements[j].click();
await new Promise(resolve => setTimeout(resolve, 100));
var expDialog = document.getElementsByClassName('data-export-dialog');
if(expDialog){
var expInput = expDialog[0].getElementsByTagName('input');
await new Promise(resolve => setTimeout(resolve, 100));
expInput[0].value += "_" +colName;
expInput[0].dispatchEvent(new Event('input', { bubbles: true }));
await new Promise(resolve => setTimeout(resolve, 100));
var expButton = expDialog[0].getElementsByTagName('button');
expButton[1].click();
}
break;
}
}
}
}
})();
})();
これをBookmarkletとしてブックマークしてLookerStudioのページで実行すると?
あら不思議ダウンロードディレクトリにcsvファイルが出力されているではありませんか。
おめでとうございます。
あなたは晴れてCSVぽちぽち地獄から解放されたはずです。
???「じゃあ、空いた時間でこれやっておいてー」
「。。。」
Discussion