試してみたブログ

AI関連・iPhone/Pixelなどのガジェット・音声入力・サーマルプリンタなど興味をある事をどんどん試してみた際の記録

Looker Studioで全ページのタイトルとURLを取得するBookmarkletを作った

背景

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)}})();