背景
Looker Studioの管理機能が弱く、レポートの一覧化などはAPIや管理画面から取得できるが、全レポートの中のページ名、ページURLなどは取得出来ない。
要件
- 全自動は難しそうなのでとりあえず開いているレポートが対象
- 拡張機能でもbookmarkletでも良いが、今回はbookmarkletで良さそう
- レポート名、ページ名、ページURLの3つを取得したい
試してみた
- ChatGPTに要件を伝えて作成
つまづきポイント
- URLやサイドメニューの情報が古くてエラーになった
- ページURLの取得に手こずっていた
- 両方を解決する為にdeveloper toolでサイドメニューのelementをinputしてあげた
- レポート名がページ名も含まれてしまう
- 分割する為の区切りの情報も古かった為、 ">"で区切られている事を伝えるとうまくいった
成果物
javascript:(function(){try{const e=document.title.split('›')[0].trim().replace(/[\\/:*?"<>|]/g,%27_%27);const t=window.location.href.match(/https:\/\/lookerstudio\.google\.com\/(?:u\/\d+\/)?(?:embed\/)?reporting\/[^\/?#]+/);if(!t){alert('lookerstudio.google.com上で実行してください');return}const a=t[0],r=document.querySelectorAll('xap-nav-link[id^="p_"]');if(!r.length){alert('ページが見つかりません。左のページナビゲーションを開いてください。');return}const n=[["レポート名","ページ名","URL"]];r.forEach(t=>{const r=t.id,o=t.querySelector('.xap-nav-item-label')?.innerText.trim()||'';n.push([e,o,%60${a}/page/${r}%60])});const o=n.map(e=>e.map(e=>%60"${e.replace(/"/g,'""')}"%60).join(',')).join('\r\n'),c=new Uint8Array([239,187,191]),l=new Blob([c,o],{type:'text/csv'}),i=URL.createObjectURL(l),s=document.createElement('a');s.href=i,s.download='looker_studio_pages.csv',s.click(),URL.revokeObjectURL(i)}catch(e){alert('エラー:'+e.message)}})();