TIPS

2020.05.28
vol.110

WEB

Google Apps Scriptで業務効率化

vol.110 Google Apps Scriptで業務効率化

こんにちは。エンジニアの海野です。テレワークが広まった現在、離れていても容易に共有できるクラウド型ドキュメントは有難い存在です。クラウド型という言葉にピンとこなくても、Googleスプレッドシートを始めとするGoogleクラウドを使っているという方は多いのではないでしょうか。今回はGoogleスプレッドシートの活用として一歩踏み込み、Google Apps Scriptでのマクロ開発をご紹介します。

Googleスプレッドシートとは

Google社が提供している表計算ソフトです。表計算ソフトというとMicrosoft社が提供するExcelが有名ですが、Excelは端末ごとにソフトをインストールして使用します。一方、Googleスプレッドシートはクラウド管理のため、離れていても共同編集・情報共有がスムーズに行えるという利点があります。
便利な反面、手軽に共有できるからこそ注意が必要な点もあります。例えば、個人情報などを含む場合は、安易に共有設定をせず必要な人にだけ閲覧権限を付与しましょう。適切な共有範囲や編集権限を設定し、便利なツールを正しく運用する意識が必要です。

Google Apps Scriptとは

GoogleスプレッドシートをはじめとするG Suiteサービスをカスタマイズ、拡張できるスクリプト言語です。JavaScript ベースとなっているため、はじめてでも取り組みすい方と感じる方が多いのではないでしょうか。

デモツール スケジュール表作成

今回は、スケジュール表作成ツールの開発手順をご紹介します。作成したいスケジュール表の開始日と終了日を入力し、メニューバー[スケジュール表] > [作成開始]をクリックすると、指定のスケジュール表が作成されるという作りです。Google Apps Scriptの基本的な機能を用いているため、シンプルながら概要を把握することができます。

完成時のコードはこちらです。

それでは早速、開発手順を見ていきましょう。

開発環境について

Google Apps Scriptは、開発環境を構築することなく、すぐに開発することができます。スプレッドシートのメニューバー [ツール] > [スクリプトエディタ]をクリックすると、エディタが開きます。ここで開発をしていきます。deployも、関数を保存するのみで完了するという手軽さです。

スケジュール表テンプレートの作成

まずは、スプレッドシート上でテンプレートを作成しましょう。
スケジュールの開始日と終了日の入力欄を作成します。日付は任意のものを入れておきます。

続いて、スケジュール表のテンプレートの作成です。
起点となる表開始行(デモツールでは5行目)と、それに続くコピー行(6行目)を作成します。A5セルに’=B5’、C5セルに’=text(B5,”ddd”)’と数式を入力します。続けて、A6セルに’=B5+1’、B6セルに’=B5+1’、C6セルに’=text(B6,”ddd”)’と数式を入力します。
なお、セルのデータ型については[メニューバー] > [表示形式]から好みのものに変更します。

以上で、テンプレートは完成です。

カスタムメニューの作成

いよいよ、エディタ上での開発に入ります。
まずはカスタムメニューを作成します。スプレッドシートを開いた時に処理実行したいので、onOpenというイベントハンドラを使います。

保存し、スプレッドシートをリロード(再読み込み)すると、カスタムメニューが表示されました。

スケジュール作成機能の開発

続いて、メインであるスケジュール作成機能の実装です。
先ほど作成したカスタムメニュー [スケジュール表] > [作成開始]をクリックした際に処理を実行したいので、function名はcreateScheとし、この中に処理を書いていきます。

メッセージボックスの設定

処理の前に確認のメッセージボックスを表示させ、[OK]を選択した場合のみ処理実行するようにします。

ここまでで保存し、[スケジュール表] > [作成開始]をクリックしてみましょう。メッセージボックスが表示されました。

日付を扱うライブラリ

Google Apps Scriptではライブラリを使用することが出来ます。ここでは、日付を扱うmoment.jsライブラリを使用してみましょう。スクリプトエディタから[リソース] > [ライブラリ]をクリックすると、ライブラリ設定のモーダルが表示されます。

[Add a library]にスクリプトIDを入力します。
moment.jsのスクリプトID:MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48

バージョンを選択し、[Development mode]を有効にすれば、設定完了です。今回は、開始日と終了日の期間を算出するためにmoment.jsを使います。

スケジュール表の作成

for文を用い、先ほど算出した期間の日数分、スケジュール表を作成します。

エディタを保存し、スプレッドシートに任意の開始日と終了日をしましょう。カスタムメニュー[スケジュール表] > [作成開始]をクリックし、指定通りのスケジュール表が作成されれば完成です。

まとめ

いかがでしたでしょうか。初めてでも、手軽にマクロが組めることが実感いただけたと思います。スプレッドシートをデータベースのように運用したり、テンプレートファイルとして書類を自動作成したり、マクロで自動化できることはたくさんあります。データ共有に優れたスプレッドシートを社内に合わせてカスタマイズできれば、業務効率化はさらに上がります。テレワークでは顔を合わせての業務が出来ないなど不都合もあると思いますが、離れていても仕事のしやすい社内環境の整備や、業務効率化を進めるきっかけとなれば幸いです。

参考URL
Googleスプレッドシート
https://gsuite.google.com/intl/ja/products/sheets/
Google Apps Script
https://developers.google.com/gsuite/aspects/appsscript?hl=ja
GAS Library Management Moment
https://sites.google.com/site/nnillixxsource/Google/Moment

  • CATEGORY
  • カテゴリ
  • RECENT POSTS
  • 新着TIPS
  • RANKING
  • ランキング
  • ARCHIVES
  • アーカイブ
2017
December (
November (
October (
September (
August (
July (
June (
May (
April (
February (
January (
2015
December (
November (
October (
August (
July (
April (
March (
February (
January (

お仕事の依頼やご相談

企画・編集、情報設計、デザイン、アートディレクションなどクリエイティブワークを得意とするブランディングオフィスです。ブランディング・Webサイト・印刷物、システム開発等を通じ、ビジネス価値向上をお手伝いします。

オンライン見積もりフォーム

さまざまなブランディング事案に対応します。
お気軽にご依頼ください。