Google Apps Scriptをスプレッドシートに活用する方法

目次
GoogleスプレッドシートでGASを使う準備
GoogleスプレッドシートなどGoogleの一部のサービスでは、Google Apps Script (以下、GAS )を利用して、処理の自動化を行うことができます。
以下の手順により、スプレッドシート上でGASを使える準備ができます。サンプルコードを使いながら説明しています。
- Googleドライブから「Googleスプレッドシート」を選択
- スクリプトエディタを開く
Googleスプレッドシートの「拡張機能」タブから「Apps Script」をクリックし、スクリプトエディタを開く - コードを入力
プロジェクト名を「メール送信テスト」、ファイル名を「sendmail」に変更し、下記のコードを入力。
以下、サンプルコードです。
function sendMail() {
const recipient = '●●●●●@gmail.com' //送信先のメールアドレス
const subject = 'メール送信テスト'; //メール件名
const body = 'テストメール'; //メール本文
GmailApp.sendEmail(recipient, subject, body); //メールの送信
}
Gmailからメールを送信する・・・GmailApp.sendEmail()
sendMailのパラメータの説明
recipient:メールが送信されるアドレス、複数ある場合はカンマで区切る
subject:メールの件名(最大250文字)
body:メールの本文
スクリプトエディタの説明
ここで、スクリプトエディタでよく触る箇所の説明をします。

プロジェクト名はデフォルトでは「無題のプロジェクト」となっていますが、クリックすると変更可能です。作成するプログラムの概要がわかるような名前に変更しましょう。
サイドバーはプロジェクトの情報、実行履歴などを確認できます。時計マークのボタンをクリックすると、スクリプトの時間指定ができます。主にスクリプトが完成した後に確認することが多いです。
エディットバーは「戻る」「進む」「保存」などのファイル編集の機能や、スクリプトの実行ボタンなど、スクリプト作成時によく使います。
スクリプトエディタは実際にコードを書く場所です。
GoogleスプレッドシートでGASを実行する
メニューの「実行」→「sendMail」→クリック
sendMail以外にも関数を複数作ってある場合は、それらが表示されます。
「実行」アイコンでも実行できます。
初めて実行する時に1回だけ、承認と許可を求められます。GASのプロジェクトでは、Googleアカウントのデータを操作するため、Googleで利用している一部のデータへのアクセス権が必要となるからです。

「権限を確認」をクリックします。

アカウント名をクリックします。

下部にある「詳細」をクリックします。

画面内に詳細が表示されるので、下部にある「無題のプロジェクト(安全ではないページ)に移動」を選択します。

「許可」をクリックします。
上記手順により、Google で利用している一部のデータへのアクセス権を許可することができます。

Googleスプレッドシート上に配置するボタンからGASを実行する
メニューから「挿入」→「図形描画」をクリックします。ここでは角丸四角形をボタンとして使ってみます。他の形の図形でも大丈夫です。
「図形」→「角丸四角形」をクリックします。
マウスのドラッグで、大きさを決めて下さい。大きさは、後でも変更できるので、適当で大丈夫です。

「保存して終了」をクリックします。

シートに図形が追加されるので図形をクリックします。

図形の右上の「・」が縦に3つ並んでいるアイコンをクリックします。

「スクリプトを割り当て」をクリック

スクリプト名を入力します。ここでは「sendMail」とします。作成したボタンをクリックしてみます。指定したメールアドレスにメールが届いているのを確認しましょう。
Googleスプレッドシートの値を取得する
ここではスプレッドシートのセルに入力されている値を取得する方法をご紹介します。
サンプルコード
アクティブなスプレッドシートからセルの範囲を指定し、行番号・列番号を指定してセルの値を取得します。アクティブというのはwebブラウザで開いているシートのことだと理解すれば大丈夫です。
function getCellSample() {
var sheet=SpreadsheetApp.getActiveSheet(); //アクティブなシート取得
var range=sheet.getRange("A1:A5"); //getRange()で操作するセルの範囲を指定
var cell=range.getCell(1,1).getValue(); // getRange()で指定したA1を起点に、getCellメソッドで行番号と列番号を指定してセルの値を取得
console.log(cell); //コンソールへセルの値をログとして出力する
}
サンプルコードで使っている関数をご紹介します。
アクティブなシートを取得する・・・SpreadsheetApp.getActiveSheet()
シートの中で操作するセルの範囲を指定・・・getRange()
指定したセルを取得する・・・getCell()
指定したセルの値を取得する・・getValue()
getActiveSheet()ではアクティブなシートを取得していますが、getSheetByName(“シート1”)のようにして、シート名を指定することも可能です。
getRange()のサンプルコードは以下です。getRange()には範囲を指定する方法がいくつかあります。
function myRangeSample() {
var sheet=SpreadsheetApp.getActiveSheet(); //アクティブなシート取得
var range = sheet.getRange("A1");//セルA1を取得
var range = sheet.getRange(1, 1);//セルA1を取得
var range = sheet.getRange(1, 1, 3);//セルA1:A3を取得
var range = sheet.getRange(1, 1, 3, 2);セルA1:B3を取得
}
Googleスプレッドシートの値を設定する
セルの値を変更するには、setValue()を使います。
サンプルコードは以下です。A1セルをgetRange()で取得し、setValue()で「変更後の値」にセルの内容を変更します。
function setCellSample() {
var sheet=SpreadsheetApp.getActiveSheet(); //アクティブなシート取得
var range = sheet.getRange("A1").setValue("変更後の値");
}
サンプルコードで使っている関数をご紹介します。
アクティブなシートを取得する・・・SpreadsheetApp.getActiveSheet()
シートの中で操作するセルの範囲を指定・・・getRange()
セルに値を設定する・・・setValue()
まとめ
今回の記事では、スプレッドシートからGASを使う手順やボタンを押すことをトリガーにスクリプトを実行する方法をご紹介しました。
また、スプレッドシートの基本的な操作方法として、セルに入力されている値の取得と、セルへの値の設定についてもご紹介しました。
GASを有効に活用することで、スプレッドシートと連動させて手作業で行ってきたことを自動化できます。
是非この記事の内容を活用し、GASに挑戦してみてください!