Google Apps Script (GAS)

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

Google Apps Script

目次

  1. ログ
    1. .log()
  2. Googleドライブ
    1. .getFolderById()
    2. .createFile()
  3. Gmail
    1. getMessagesForThreads()
    2. search()
    3. sendEmail()
  4. Googleスプレッドシート
    1. .getActiveSpreadsheet()
    2. .openByUrl()
    3. .openById()
    4. .getActiveSheet()
    5. getSheetByName()
    6. getRange()
    7. setValue()
    8. .getCharts()
  5. Googleスライド
    1. .create()
  6. PropertiesService
    1. getScriptProperties()
  7. Session
    1. getActiveUser()
  8. UrlFetchApp
    1. fetch()
  9. Utilities
    1. .formatDate()
  10. トリガー
    1. onOpen()
    2. onEdit()
    3. doGet()
    4. doPost()

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];

チャート(グラフ)を画像ファイルとしてGoogleドライブに保存する Google Apps Script (GAS) スクリプトを以下に示す。


function saveChartAsImage() {
  // グラフを取得する(グラフの名前やIDで指定)
  var chart = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getCharts()[0];

  // 画像として保存する
  var blob = chart.getAs('image/png');
  var folder = DriveApp.getFolderById('1oL-Oaz3LWSuPOw7VC1tDlbTfvTNdOj9e'); // 保存先のフォルダIDを指定
  folder.createFile(blob);
}

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");