仕事をする上で、効率的にできる部分は、素早くスマートに終わらせたいですよね。事務作業の効率化をするなら、GASがぴったりです。
しかし、どんな手順で何をすればいいか分からず困っている方もいるかもしれません。
「GASで業務効率化したいけど、使い方が分からない」
「事務作業の効率化ってどうやるんだろう?」
こうした悩みを持っている方のために、この記事では、GASの基本的な操作方法から、事務作業への活用例を紹介します。
読み終わる頃には、GASを簡単に使えるようになっているはず。今の仕事の工数を削減したい人や、効率化をしたい人は必見です!
手作業でやっていることを自動化して、業務の効率化をしましょう。
この記事の目次
GAS(Google Apps Script)とは?
GAS(ガス)とはGoogle Apps Scriptの略で、Googleが提供しているプログラミング言語です。GASを使えば、スプレッドシートの作成や編集、書類の作成などの自動化ができるようになります。
時間のかかる事務作業も、自動で処理することで作業工数を減らすことができます。具体的な使い方を説明する前に、まずはGASの特徴やGASを使ってできることを説明していきます。
GASの特徴
まずは、GASの主な特徴を3つ紹介します。
- Googleアカウントがあれば無料で使える
- Googleの各種サービスとの連携が容易
- 開発環境を用意せずに使える
GASは誰でも無料で使えるツールのため、コストを気にせず始めることができます。
また、Google Chromeなどのブラウザ上で使用するので、システムの導入や運用の手間を減らすことも可能です。しかも、Googleの各種サービスとの連携が容易にできるので、開発の知識がない人でも簡単に使えます。
業務を効率化するための手軽で強力なツールとして、GASはとてもオススメです。
GASでできること
GASはGoogleスプレッドシートやGoogleドライブ、Googleカレンダーなどと連携することで、手動で行っている業務を自動化することができます。
GASを使えば、たとえば下記の業務を自動化できます。
- スプレッドシートに指定のデータを自動で転記する
- Gmailに添付されたファイルを指定のGoogleドライブへ自動保存する
- Googleカレンダーに予定を自動で登録する
また、SlackやLINEなどのGoogleサービスではないアプリケーションと連携することも可能です。
Slackの場合、Googleフォームに投稿することでチャンネルを自動作成したり、スプレッドシートに記載されている内容を通知したりできます。
LINEでは、定期的にメッセージを自動送信したり、LINEの自動返信Botを作成することが可能です。
Googleサービスではないアプリケーションと連携する場合は、やりたいことに沿って、連携するサービスを選択してみましょう。
GASの基本的な使い方
では、実際にGASを使うときの基本操作を解説していきます。
GASを使うためには、まずスクリプトエディタを開く必要があります。
スクリプトエディタの開き方
スクリプトエディタとは、プログラム(スクリプト)を作成・編集するためのソフトウェアやツール(エディタ)のことです。
GASのスクリプトエディタの開き方は2つあります。
Googleサービス上から開く
GoogleスプレッドシートやGoogleドキュメントなど、使用しているGoogleサービス上から開く方法です。このスクリプトエディタを、コンテナバインド型と言います。
コンテナバインド型では、スクリプトエディタを開いたGoogleサービスに紐付いた状態でスクリプトが保存されます。
そのため、以下のような場合にオススメです。
- 特定のスプレッドシートにオリジナルの関数を作成したい時
- スプレッドシート上に、注意喚起などのポップアップを表示したい時
- 特定セルの更新と連動して、別のセルを編集したり加工したい時
コンテナバインド型で開く際は、GASを設定したいGoogleサービスを開きツールバーの「拡張機能」から「Apps Script」を選択してください。
※画像はスプレッドシートから開く場合
Googleドライブから開く
スクリプトエディタはGoogleドライブ上から開くことも可能です。このスクリプトエディタを、スタンドアロン型と言います。
スタンドアロン型では、Googleドライブ上にスクリプトが保存されます。他のGoogleサービスとは紐づかず、独立した状態での保存になります。
そのため、以下のような場合には、スタンドアロン型がオススメです。
- 複数のGoogleサービスで使用したい時
- Googleサービスではないアプリケーションと連携したい時
スタンドアロン型で開く際は、Googleドライブを開き、左上の新規ボタンから「その他」「Google Apps Script」を選択してください。
スクリプト画面の見方と実行方法
次に、スクリプトエディタの画面について見ていきます。ここでは、よく使う機能をそれぞれ説明します。
①プロジェクト名
プロジェクト名は、スクリプトエディタのタイトルのことです。最初の状態では、無題のプロジェクトと記載されています。クリックすると、プロジェクトの名前を変更できます。
②ファイル
作成したプログラムをファイル別で管理することができます。最初の状態では「コード.gs」というファイルのみになっています。
新規ファイルの追加やファイル名の変更、コピーの作成、ファイルの削除が可能です。
③エディタ
プログラムを動かすためのコード(指示や命令する文章)を作成、編集するスペースです。
ファイル選択後、このスペースにプログラムを動かすためのコードを書いていきます。最初の状態ではfunction myFunction ( ) { }という文字が入力されています。
この文字は削除するなど、上書きしても問題ありません。
④ツールバー
ツールバーは以下のボタンで構成されています。
- コードの編集を一つ前に戻す
- コードの編集を一つ進める
- 保存
- 実行
- デバッグ
- 関数
- 実行ログ
左側にある矢印が、コードの編集を一つ前に戻す・コードの編集を一つ進めるボタンです。Googleスプレッドシートにあるボタンと同じように扱えます。
矢印の右にあるのは「保存」ボタンです。
スクリプトエディタの内容は自動保存されないので、編集した際は必ず「保存」ボタンを押して保存してください。
記述したプログラムを実行したい時は、「実行」ボタンを押します。実行ボタンは、作成したコードを動かすことで、正しく動くかどうかを確認するために使用します。
初めて実行ボタンを押す場合、実行ボタンを押した後に権限承認のポップアップが出てきます。表示に従って権限を承認しましょう。
実行した時に記録を確認したいときは、「実行ログ」ボタンで確認が可能です。
デバッグ機能の説明
デバッグ機能とは、コード(指示や命令する文章)の動作を検証したり、エラーやバグを探し出して修正したりする作業のことです。
実行ボタンでは、エラーがどこでどのように発生したのかという詳細な情報がわかりません。
一方、デバッグでは、どの行でどのようなエラーが発生しているのかを教えてくれます。
デバッグを使うことで、エラーを効率よく特定したり、処理を少しずつ進めて変数の中身を確認することが可能になります。変数についてはこの後の章で解説します。
エラーやバグを効率よく特定し、修正を行うにはデバッグを行うことが大切です。具体的には、以下ができるようになります。
①エラー内容の詳細を確認する
デバッグは、1行ずつコードを実行し、各処理ごとの値(データ)などを確認しながら進みます。そのため、エラーやバグが発生すると、その行で実行を停止し詳細なエラー情報を教えてくれます。
エラー情報は、デバッグを開始した際に画面下側に表示される「実行ログ」から確認が可能です。
実行ログには、エラーが発生した行とエラー情報が表示されるので、どの部分に修正が必要なのか、簡単に特定できます。
②ブレークポイントで実行を止める
ブレークポイントとは、実行を停止できる地点のことを指します。
ブレークポイントを設定することで、停止した地点までのそれぞれの変数の値を確認したり、一行ずつコードを実行して挙動を観察したりすることができます。
少しずつ処理を進められるので、複雑なコードや処理の多いコードを作成する時には、変数の中身の確認やエラーのチェック、修正をこまめに行うことが可能です。
また、好きなところで実行を停止して動作を確認できるため、コードを理解するのにも役立ちます。
他の人が書いたコードを見たり、新しくコードを学習するときにもオススメです。
ブレークポイントの設定方法は、スクリプトエディタ内にある左側の数字(行番号)をクリックするだけです。
行番号の左に紫色の丸が付いていれば、正しくブレークポイントが設定できています。
ツールバーのデバッグボタンからデバッグを開始すると、紫色の丸で実行を停止してくれますよ。
③変数の値(中身)を確認する
デバッグを開始すると、右側に「デバッガ」という欄が表示されます。
ブレークポイントを設定しておくと、デバッガ欄に実行した処理の変数の中身や状態を確認することが可能です。
例えば以下の場合は、fudebako という変数の中に えんぴつ、消しゴム、定規 という3つの値(データ)があると表示されています。
トリガーの設定方法
指定の時間や特定の処理などをした時に、作成したプログラムを自動で動かすように設定するのが「トリガー」です。
トリガーを設定することで、「毎日13時に実行する」「スプレッドシートのセルの値が変更された時に実行する」などが可能になります。
ここでは、スクリプト画面からできる、トリガーの簡単な設定方法をご紹介します。
- 画面左の目覚まし時計のようなマーク(トリガー)をクリック
- 右下の「トリガーを追加」とあるプラスボタンをクリック
- 希望内容に沿って、各項目を設定
- 最後に「保存」ボタンを押して完了
トリガー関数を作成すれば、自由度の高い設定も可能です。気になったらぜひ調べてみてください。
コード作成のルールや書き方
コードとは?
コードとはプログラムの処理の内容を書いたテキストのことです。この章では、GASでよく使われる基本的なコードを紹介します。
コードを書く時のルール
コード作成の一般的なルールとしては以下が挙げられます。
- ブロックの始まりと終わりには中括弧 { } を使用する
- ブロックの中身はインデント(通常はスペース2つか4つ、またはタブ1つ)で一段下げる
- コメントを残す際は // を使用する
- 行末はセミコロン(;)を置く
コードの書き方
次に、GASを使用する際によく登場するコードの内容を紹介していきます。
関数を作る(function)
関数とは、一連の処理をまとめているブロックのことです。GASは処理を行う関数を作成して実行することで動作します。
関数は、「function 関数名() { 処理の内容 }」と記述し、関数名の部分には英字で好きな名前をつけることができます。大文字・小文字の区別があるので注意してください。
例えば、以下のようなコードであれば、関数名は「myFunction」です。
その後に記載されている2行目から6行目が、処理の内容となります。
変数を宣言する(var)
データを格納し、操作するための箱のことを変数と言います。基本的には「var 変数名」と記述することで、変数を宣言する事ができます。
また、変数は「var 変数名 = 値」とすることで、値の代入が可能です。この時、「= 」はイコールではなく代入を表します。例えば、以下のようなコードであれば、変数名「msg」という箱に、「”Hello!”」という文字が代入(格納)されています。
6行目にある Logger.log は () にデータを指定してログ出力するものです。変数 msg を指定しているので、ログには代入(格納)されている「Hello!」が出力されます。
配列とは
配列とは、複数のデータを1つの変数で扱うためのデータ構造のこと。学校のお道具箱や筆箱のようなもので、1つの箱(変数)に対し複数の物(データ)が入っている状態を配列と呼びます。
記述は「var 変数名 = [ データ ]」となり、配列の要素(中身のデータのこと)は番号(インデックスと呼びます)で管理します。番号(インデックス)は1ではなく0から始まるので注意してください。
例えば、以下のようなコードだと fudebako という変数名の配列に、 “えんぴつ”、”消しゴム”、”定規” という3つの要素(データ)が格納されています。
21〜23行目にあるログ出力では、上から順に fudebako の0番目、1番目、2番目の要素(データ)を取得しています。
実行ログを見ると、fudebako の要素(データ)が該当の番号ごとに出力されています。
条件分岐(if文)ができる
条件分岐(if文)は、「もし〜ならば」という条件に基づいて特定の処理をするための文のことです。スプレッドシートでも使う if関数 に似た感覚で使用できます。
書き方は「if(条件式){ 条件式がtrueの時の処理 } else { 条件式がfalseの時の処理 }」です。
もし { falseの時の処理 } が必要ない場合は、else以降を省いてしまっても問題ありません。
例えば、以下のコードは 変数名num に 3 が格納(代入)されています。if文の条件式は num > 2 ( num は2より大きい)なので、実行ログには 条件式がtrueな場合の “numは2より大きいです。” が出力されています。
繰り返し(for文)処理ができる
繰り返し(for文)処理は、特定の処理を繰り返し行うための文のこと。ループ処理とも呼ばれます。
同じ処理を何度も行いたい時や、配列のすべての要素(データ)に何らかの処理を行いたい場面でよく使われます。
for文の書き方は、「for (初期値 ; 条件式 ; 更新式){ 処理 }」です。例えば以下のコードでは、変数 i を繰り返し処理しようとしています。
- 初期値: var i = 0 なので、0から始まります。
- 条件式: i < 5 なので、 i の要素(データ)が 5 より下である限り処理は繰り返されます。
- 更新式: i++ になっていて、これは処理ごとに i の値に1ずつプラスするものです。
- 処理 : i の値をログ出力する形になっています。
1回目の処理の i は 0 (初期値)なので 0 がログ出力されました。
2回目の処理は、i++ により i がプラス1されたので、1が出力されています。
3回目の処理は、i++ により i が更に1プラスされるので、 2が出力されます。
条件式を満たさなくなるまで繰り返し処理が行われるので、i が 5 になったタイミングで処理は終了します。
この記事のハッシュタグ
事務作業で役立つGASのアイディア
ここからは、事務作業を効率化する際に使えそうなGASのアイディアをご紹介します。
スプレッドシートに独自の関数を作る
GASを使うことで、スプレッドシートにオリジナルの関数を作成することができます。例えば、以下のような関数を作成できます。
- 特定の条件に合うデータのみを取り出す関数
- 色付きセルの個数を数えたり、中身を参照したりする関数
- 日付の形式を統一する、文字列の文字数をそろえたりする関数
オリジナルの関数を作る場合は、スプレッドシート上から開く「コンテナバインド型」のスクリプトが便利です。
スプレッドシートを自動化する際は、 if文やfor文の他に以下が使われます。
①SpreadsheetApp.getActiveSpreadsheet():現在アクティブなシート(タブ)を取得する
②シート名.getRange(‘セル範囲’):指定したセルの範囲を取得する
③getValue()、getValues():②の末尾に加えることで、指定範囲のセルの値が取得できる
④setValue()、setValues():②の末尾に加えることで、指定範囲のセルに値の入力ができる
⑤getBackgrounds():②の末尾に加えることで、指定範囲のセルの背景色を取得できる
スプレッドシートのデータ転記を自動化する
GASを使って、スプレッドシートに記載されている情報を別のスプレッドシートに自動で転記することができます。
複数のスプレッドシートを跨ぐ場合は、スタンドアロン型のスクリプトが便利です。
転記する際には、データを加工・整形することも可能です。コードは以下が使えます。
filter: 配列.filter(function(変数名){ return 指定条件 });
指定した配列に対し、指定条件でフィルタリングすることができます。
例)「空白ではない」を指定条件にして、空白を除外した配列にする など
sort:セル範囲.sort({column: 列番号 , ascending: 昇順か降順か指定})
セル範囲に対し、指定した列番号を基準にソートをかけることができます。
列番号はA列なら1、B列なら2を入力し、昇順の場合はtrue、降順の場合はfalseを指定します。
concat:文字列.concat(結合したい文字列)
文字列同士を結合することができます。
+ を使うことでも結合は出来ますが、数値の場合は足し算として認識されてしまうため
数値を文字列に変換してconcatで結合するのも1つの手です。
スプレッドシートの内容をPDF化してドライブへ保存する
GASを使えば、スプレッドシートで作った見積書などを、自動でPDFにしてドライブへ保存することも可能です。スプレッドシート上にボタンを作成して、ボタンを押すことで処理を始める…なんてことも。ただ、PDFを作成する場合は、APIを使用する必要があります。
API(Application Programming Interface)とは、別のサービスと連携するための規則や仕様のことです。
APIが提供する規定に従えばOKなので、ゼロから作る必要がなく効率的にコードの記述ができます。APIを使うとGASでできることが広がるので、希望の処理に合わせて調べてみてはいかがでしょうか。
GASと外部サービスを連携する
GASには「UrlFetchApp」というサービスがあり、これを使うことで外部サービスのAPIを呼び出すことができます。
外部サービスと連携することで、GASを使って通知を送ることも可能になります。
ビジネスチャットアプリ Slackを例にすると、以下のような流れで連携します。
- SlackのAPIサイトから、APIトークンを取得
- GASのUrlFetchAppサービスを使い、SlackのAPIを呼び出す
APIトークンとは、安全に情報をやり取りするのに使用する証明書のようなもの。トークンがサービス間で共有されることで、アクセスが許可されたと確認されます。
なお、トークンは、非常に重要な情報なので情報が漏えいしないよう管理には十分な注意が必要です。
連携したいサービスのAPIの説明をよく確認し、使用時の注意点、使用上限などを理解したうえで利用してくださいね。
メールの一斉送信を自動化する
スプレッドシートに送信先メールアドレスのリストを作成し、GASを使ってGmailからメールの一斉送信をすることが可能です。
メールの一斉送信を行う場合は、以下のGmail送信メソッドが使用できます。
GmailApp.sendEmail(address, subject, body, options);
addressには送信先メールアドレス、subjectは件名、bodyは本文を入れます。
optionsは入れなくても問題ないですが、送信者の名前、cc、bcc、添付ファイルなど追加の設定を行いたい場合は設定すると良いでしょう。
addressなどの各項目を変数にして、メール送信の繰り返し処理を実施すれば、一斉送信ができますよ。
なお、上記メソッドはGmailの送信制限に準じているので、送信数には注意が必要です。
よくあるエラーと対処法
ここからは、GASを使う時によく出会うエラーと対処法を紹介します。
よくあるエラー文
TypeError: Cannot read property ‘〜’ of undefined
このエラーは、存在しない値名や関数名がある時に発生します。’〜’ に該当箇所が表示されるので、タイプミスをしていないか、存在しない名前ではないか確認しましょう。
Exception: You do not have permission to perform that action.
スクリプトエディタの権限や、GASで使用したいもの(Googleドライブ内の特定ファイルや特定のスプレッドシート、使用したいAPIなど)のアクセス権限が付与されていない場合に発生します。
デバッグ機能を使用して、どの部分に対してエラーが発生しているか特定し、権限付与など適切に対処しましょう。
Exception: The coordinates or dimensions of the range are invalid.
GASのスプレッドシートで範囲外のセルを操作しようとしたときに発生します。存在しない行や列を指定しているので、正しい範囲に修正する必要があります。
Exception: Service invoked too many times for one day
GASの使用回数や実行時間の制限を超えるとこのエラーが発生してしまいます。非効率なループ処理や、不必要なプログラムの実行は避けてください。コードは必要最低限になるようにしましょう。
AIツールを活用する
エラーが発生した時には、チャット系AIツールの活用も便利です。エラー内容を伝えて、どのように改善すべきかを質問してみましょう。
外部のAIツールを使用する際は個人情報や社内情報を含めないように注意してくださいね。
最近はあらゆるAIツールが登場しています。作業が滞ってしまった時は、ぜひ活用してみてください。
まとめ
本記事では、GASの基本的な使い方や活用のアイディアを紹介しました。GASを使って自動化することで、事務作業はグッと効率的に進めることができます。
「事務作業を効率化したい」
「GASに興味はあるけど、何を取り入れたら良いかイメージが湧かない」
こうした悩みを抱えていた方の手助けになれたら幸いです。ぜひGASで業務を効率よく進めましょう!
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。