Google スプレッドシートでYouTubeの埋め込みプレーヤーを表示させる。でもあまり使えない。

まとめ

  • Google Apps Scriptを使ってスプレッドシートのサイドバーにYouTubeの埋め込みプレーヤーを表示させるよ!
  • でもGoogle Apps Scriptの実行は編集権限がないとできないよ!
  • つまり閲覧権限だけしかない場合は実行できないよ!

実行イメージ

www.youtube.com
ちなみにサーモン爆破は10周年らしいです。マジか……

やったこと

以下の2ファイルを作成。

code.gs

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Player').addItem('Show Player', 'showPlayer').addToUi();
}

function showPlayer() {
  const ui = SpreadsheetApp.getUi();
  const html = HtmlService.createTemplateFromFile('player').evaluate();
  html.setTitle('Player');
  ui.showSidebar(html);
}

function getCurrentRowData() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getActiveCell();
  const id = sheet.getRange(range.getRow(), 1).getValue();
  const start = sheet.getRange(range.getRow(), 3).getValue();
  return {'id': id, 'start': start};
}

player.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <div id="ytplayer"></div>
    <div>
      <input type="button" value="Start"
        onClick="google.script.run.withSuccessHandler(playVideo).getCurrentRowData()">
    </div>
    <script>
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('ytplayer', {
          height: '200',
          width: '200',
          videoId: '',
          events: {}
        });
      }

      function playVideo(videoInfo) {
        player.loadVideoById({'videoId': videoInfo.id,
                              'startSeconds': videoInfo.start});
      }
    </script>
  </body>
</html>

これを拡張機能のApps Scriptで設定後、再度スプレッドシートを開くとメニューバーに「Player」が表示、その中の「Show Player」を押下するとサイドバーにYouTubeの埋め込みプレーヤーが表示されます。
サイドバーの「Start」ボタンを押下すると、スプレッドシート中で現在選択中の行の情報で再生を開始します。

問題点

  • サイドバーの幅は300px固定のため、映像は見えないものと思ってください。音を聞く用途なら使えると思います。最初これやろうと思ったのもその用途が目的でした。
  • Apps Scriptが編集権限がないと実行できないらしく、閲覧権限のみでスプレッドシートを開いてもメニューバーに「Player」が表示されません。

結論

GitHub - rutilicus/youtube-custom-music-playerのいい代替手段にはならなかった。(ダイマ)