Google Apps Script (GAS)

Google Apps Script (GAS) を使って、JavaScriptからスプレッドシートを操作する方法を入門向けに紹介します。

GoogleスプレッドシートからGASを編集する

GoogleスプレッドシートからGoogle Apps Script (GAS)を編集するには、「拡張機能」メニューの「Apps Script」をクリックしてスクリプトエディタを起動する。

「拡張機能」メニューの「Apps Script」
Figure 1. 「拡張機能」メニューの「Apps Script」

「無題のプロジェクト」のコード.js が編集できるようになり、最初は次のコードになっている。

function myFunction() {

}
Apps Script 無題のプロジェクト
Figure 2. Apps Script 無題のプロジェクト

ログを出力する

Google Apps Script (GAS) からログを出力するには、Loggerオブジェクトのlogメソッドを使う。

Logger.log('message');

書式を指定してログを出力することもできる。

Logger.log('message %s', 1);

Googleドライブのフォルダを取得する

Google App Script (GAS) からGoogleドライブのフォルダを取得するには、DriveApp.getFolderById メソッドを使う。

DriveApp.getFolderById(folderId)

GoogleドライブのフォルダIDは、Googleドライブでフォルダを開いたときのURLから知ることができる。

https://drive.google.com/drive/folders/folderId

GASからGoogleドライブのフォルダを取得する例を以下に示す。

const folder = DriveApp.getFolderById("abcdefghijklmnopqrstubwxyz012345");

Googleドライブにファイルを保存する

Google App Script (GAS) から Google ドライブへファイルを保存するには、DriveApp.createFile メソッドを使う。

DriveApp.createFile(data)

Google スプレッドシートを PDF に変換して、Google ドライブへファイルを保存する例を以下に示す。

let ss = SpreadsheetApp.getActiveSpreadsheet();
let pdf = ss.getAs("application/pdf");
pdf.setName("example");
DriveApp.createFile(pdf);

GmailApp.sendEmail()

Google App Script (GAS) から Gmail でメールを送信するには、GmailApp.sendEmail() メソッドを使用する。

sendEmail(mailto, subject, body)

以下に示す引数を GmailApp.sendEmail() メソッドに指定する。

mailto
送信先のメールアドレス
subject
メールのタイトル
body
メールの本文

GASから Gmail でメールを送信する例を以下に示す。

const mailto = "example@gmail.com";
const subject = "Hello";
const body = "Hello, everyone.";
GmailApp.sendEmail(mailto, subject, body);

getSheetByName()

Google Apps Script (GAS) からシートのオブジェクトを取得するには、次の方法がある。

シート名を指定してシートを取得するには、スプレッドシートオブジェクトのgetSheetByNameメソッドを使う。

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('シート1');

getAs()

スプレッドシートを特定のデータ形式へ変換するには、getAs メソッドを使う。

SpreadSheet.getAs(contentType)

以下に示す引数を getAs メソッドに指定する。

contentType
MIMEタイプ

Google スプレッドシートを PDF に変換して、ファイルを Google ドライブへ保存する例を以下に示す。

let ss = SpreadsheetApp.getActiveSpreadsheet();
let pdf = ss.getAs("application/pdf");
pdf.setName("example");
DriveApp.createFile(pdf);

getRange()

Google Apps Script (GAS) でセルを取得するには、次の方法がある。

「A1」や「B2」のようなアドレスを指定してセルを取得するには、シートオブジェクトのgetRangeメソッドを使う。

var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange('A1');

行番号と列番号を指定してセルを取得するには、シートオブジェクトのgetRangeメソッドを使う。数値で指定できるので、ループ処理に便利である。

sheet.getRange(line, column);
line
1から始まる行番号
column
1から始まる列番号
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange(1, 2);

setValue()

Googleスプレッドシートのセルに値を入力するには、RangeオブジェクトのsetValueメソッドを使う。

var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange('A1').setValue(1);

グラフのコレクションを取得する

Google スプレッドシート等に埋め込まれたグラフ(チャート)のコレクションを Google Apps Script (GAS) から取得するには、getCharts メソッドを使う。

sheet.getCharts()

Google スプレッドシート等に埋め込まれたグラフ(チャート)のコレクションを取得する例を以下に示す。

let sheets = SpreadsheetApp.getActiveSpreadsheet();
let sheet = sheets.getSheetByName('シート1');
let charts = sheet.getCharts();

取得したグラフのコレクションは配列として参照できる。

let chart = charts[0];

Utilities.formatDate()

formatDate(date, timeZone, format)

以下に示す引数を formatDate メソッドに指定する。

date
文字列に変換するDate オブジェクト
timeZone
タイムゾーン
format
JavaSimpleDateFormat に準じたフォーマット指定文字列

現在の日付と時刻をログへ出力する例を以下に示す。

var date = new Date();
Logger.log("JST " + Utilities.formatDate(date, "JST", "yyyy/MM/dd (E) HH:mm:ss Z"));
Logger.log("GMT " + Utilities.formatDate(date, "GMT", "yyyy/MM/dd (E) HH:mm:ss Z"));
Logger.log("PST " + Utilities.formatDate(date, "PST", "yyyy/MM/dd (E) HH:mm:ss Z"));

SlideApp.create()

Google スライドを新規作成するには、SlideApp.create() メソッドを使う。

create(name)

Google スライドを新規作成する例を以下に示す。

const slides = SlidesApp.create("temp");