見出し画像

GoogleAppsScriptの導入方法と、作ってみたスクリプトのご紹介

月初の緊急事態宣言以降、世の中 すごい勢いで変化しております。1ヶ月前・2週間前のアタリマエが次々と塗り替えられていく感覚。
弊社も2月には時差出勤を、3月にもテレワークの導入開始をと対応を進めており、今月からは全社テレワークで出勤者ゼロとなりました。
会議類はweb会議に移行し、zoomやTeamsなどをお客様の環境に合わせて活用しております。
会社の環境やポリシーによって様々ですが、色々とセキュリティの懸念こそあれ、やはり使い勝手の良さからzoomが第一選択肢になっているようですね。

そんなweb会議中心の業務スタイルの中、急遽のテレワーク導入だったためVPNなどは提供できなかったことから「社内のデータには自宅からアクセスできない」「グループウェアでのデータ更新やり取りは先祖返りリスクも」などの課題が顕在化しました。そこで弊社でも、Web会議しながら複数人で同時編集しながら進めるのにも向いているというのもあり、これまで業務ベースではほとんど使用していなかった “Google スプレッドシート”を今更ながら本格活用し始めた次第です。
※数年前にも活用の話は上がったのですが、必要に迫られるか否かは意思決定&導入受け入れに重要なファクターですねw

そこで今回は、『手習いながらスプレッドシート用に作ってみたスクリプト』を、基本的な活用方法とともにご紹介します。

■まず、Google Apps Scriptとは? 

簡単な前提としまして、ここでいうスクリプトとは、Google Apps Script(GASと略します)のこと。Javascriptを使ってGoogleのサービスを操作できる仕組みで、平たく言えば「Excelで言う“VBA”のようなもの」と捉えてもらえば良いと思います。VBAのように、ExcelだけでなくWordやPowerpointを操作できるように、GASもGmailやGoogleカレンダーを操作できるのも同じです。

■導入のしかた

・Googleスプレッドシートを開き、「ツール」から「スクリプトエディタ」を選択。

画像1

・「無題のプロジェクト」として、スクリプト入力画面が表示されます。

画像2

・既に

  function myFunction() {
	
  }

 と記載されている右側の入力部分に、スクリプトを入力していくことになります。

・ここで本来は、Javascript等の知識がある方が ここにゴリゴリとプログラミングしていくことになるのですが、世の中には「優秀なスクリプトを無償で公開してくれている」神様のような方が数多くいらっしゃいますので、そちらからスクリプトをコピペすれば “ プログラムの知識がない人間でも十分に活用できる”わけです。

試しに、下記の簡単なスクリプトをコピペしてみましょう。

function myFunction() {
   const sheet = SpreadsheetApp.getActiveSheet(); 
   const lastRow = sheet.getLastRow();
   sheet.getRange(2, 2).setValue(new Date());
}

・「保存」アイコンからスクリプトを保存します。初回保存時はプロジェクト名を聞かれると思いますので、“TEST”でも“Hello GAS!”でも 自由に名前をつけて保存します。

画像3

・最後に、先ほどコピペしたスクリプトを実行します。実行は「実行」アイコンをクリックです。

画像4

ここで、実行権限について認証を求められる場合もあります。他の人と共有しているシートに勝手に権限を与えるのはまずいですが、自ら作成したシートであれば承認して問題ないでしょう。
「許可を確認」ボタンを押下、アカウントを選択、「詳細」の文字リンクから「安全ではないページへ移動」を行い、「許可」ボタンを押してください。

・特にエラーなど出ていなければ、冒頭で開いたスプレッドシートのB2セルに、本日の日付が入力されていることと思います。

画像5

スクリプトの簡単な導入例は、以上になります。
以下で紹介するスクリプトも、基本的にはコピペで導入可能なので、プログラムに慣れていない方でも さほど難しい手順を踏むことなく取り入れることができると思います。

それでは以下より、「作ってみたスクリプト」の紹介です。

■作ってみた:毎日決まった時間に、更新漏れを検出するスクリプト

“毎日決まった時間に、「最終更新日付」が記載されたD列のセルの日付と当日日付とを比較し、更新日が前日以前の場合は文字を赤く表示する”というスクリプトです。

まず、チェックを行うスプレッドシートを開きます。
今回は仮に「従業員の出勤状況を管理するシート」を例にします。“当日の出勤状態を記載したら、D列の日付を更新する”という前提です。

画像6

このスプレッドシートのスクリプト画面を開き、下記をコピペします。

function updateCheck(){
 const sheet = SpreadsheetApp.getActiveSheet(); 
 const lastRow = sheet.getLastRow();
 const Today = new Date();
 const Col = 4; //4番目の列、すなわちD列を示す
 const Color = "red"; //4番目の列、すなわちD列を示す
 Today.setDate(Today.getDate()-1);
 
 for(let i = 2; i <= lastRow; i++) {
   if(sheet.getRange(i, Col).getValue()<Today){ 
     sheet.getRange(i, Col).setFontColor(Color);
   }
 }
}

5行目の数字「4」は、D列に「最終日付」があることを、6行目の「red」は文字を赤色に変更することを意味しています。状況に応じて適宜変更してください。

コピペが終わったら、「保存」し、「実行」します。
スプレッドシートの日付が前日(4/26)以前のものが、赤く色がつけられました。

画像7

この状態でも、毎回手動でスクリプトを実行すれば事足りはするのですが、不便ですのでもうひと手順。
「毎日決まった時間にこのスクリプトを動かす」設定を行います。

まず、スクリプトの編集画面でストップウォッチ型の「トリガー」アイコンをクリック。トリガー設定の画面が新たに開きます。

画像8

ここで「トリガーを追加」を選ぶと設定ウインドウが開きます。
深く考えることなく“時間主導型”、“日付ベースのタイマー”を選択し、毎日実行する時間帯を選んで「保存」してください。

画像9

これで設定は完了です。トリガー設定の画面に、一行追加されていることと思います。
これにより毎日、決まった時間になるとスクリプトが起動しますので、いちいち手動で実行をして上げる必要がなくなります。

画像10

いかがでしょうか。色々と工夫することで可能性が広がりそうです。
データ量が多くなると、ExcelのようなPCスペック任せの力技は通用しなくなる...なんて話も聞きますので、実行速度を意識したスクリプトなどの工夫も必要になりそうです。

他にも「Googleフォームで回答があった場合にスプレッドシート記載&メール通知」だとか「フォームの回答が設定上限に達した際に回答締め切り」なども作ってみたのですが、長くなってしまうのでまたの機会に。

この文章を読んで、一人でも「あ、なんか面白そう」「試しにコピペしてみようかな」なんて方が 新たな扉を開いてもらえると嬉しいです。

制作部 松江



この記事が気に入ったらサポートをしてみませんか?