かずきち。の日記

サーバサイドエンジニアのつぶやき

GoogleAppsScript10行を使って、スプレッドシートのメニューに独自メニューを追加してカスタマイズする方法


パソコンやスマートフォンの使い方は開発者の言いなり?

みなさん、パソコンやスマートフォンをお使いかと思いますが、それには「取り扱い説明書」なるものがあります。
当然エクセルにも取扱説明書があります。
多くの社会人はマイクロソフトの奴隷として、ワードやエクセルに服従することになります。
そしてオンライン版エクセルとして存在するのが、Googleスプレッドシートでインターネットを経由してパソコンからでも携帯電話からでも閲覧ができます。

こうゆうのを教えることを生業にしている人も居て「エクセル教室〜〜♪」みたいなのが巷にはあります。
しかし最近だとリモートワークが盛んなこともあり、
このGoogleスプレッドシートというのは自分でオリジナルのメニューが作れますので、今回はその方法を紹介します。

スプレッドシートを開いてみる

docs.google.com
 引用:
https://docs.google.com/spreadsheets/u/0/?tgif=d

ここにアクセスをしてみましょう。

こんなありきたりなページが表示されます。
今回はここのメニューに自分の好きなメニューを追加していきます。

拡張機能の配下に「GoogleAppsScript」の文字

これはGoogleスプレッドシート魔改造するための開発者ボタンと覚えてもらえればいいです。

function onOpen() {
  const customMenu = SpreadsheetApp.getUi()
  customMenu.createMenu('今日の司会選択') //メニューバーに表示するカスタムメニュー名
      .addItem('司会決定', 'Random') //メニューアイテムを追加
      .addToUi()
}

function Random(){

  var results=["白石麻衣","秋元真夏","齋藤飛鳥","山下美月","賀喜遥香","遠藤さくら","堀未央奈"];

  for(var i=0;i<1;i++){
    Logger.log("今日の司会は"+results[Math.floor(Math.random()*10)]+"さんです");
    //メッセージボックスで選択肢を出す
    var result = Browser.msgBox("今日の司会は\n", results[Math.floor(Math.random()*10)]+"さんです", Browser.Buttons.OK_CANCEL);
  }
}

こんな形で本日の司会をやってほしい人を書いていきます。
ここでポイントはfunction名をonOpen()にしている点です。
シンプルトリガーというのがあり、ある条件を満たしたら、プログラムを実行させることができるおまじないです。

developers.google.com
引用:
https://developers.google.com/apps-script/guides/triggers

毎月同じことをしている人・毎週同じことをしている人には必要不可欠です。
ここで私は「function onOpen()」と記載していますので、スプレッドシートを開いたらプログラムが実行します。
「本日の司会選択」というメニューが追加されます。

こんな独自メニューが登場しているかと思います。

するとこんなふうに今日の司会は山下美月さんですよと教えてくれます。
ワードやエクセルはマイクロソフトの言いなりですが、Google製品はある程度ユーザーに改造させてくれる余地を与えていますので、
友達・同僚をびっくりさせたい人はぜひやってみてください。