Google Apps Script(GAS)基本構文|完全ガイド【初心者向け】

「Googleスプレッドシートで毎日同じ作業を繰り返している…」「Gmailの定型メール送信を自動化したい…」

そんな悩みを解決できるのが、Google Apps Script(GAS)です。

GASは、Googleが提供する無料のプログラミング環境で、スプレッドシート、Gmail、カレンダー、ドライブなど、様々なGoogleサービスを自動化できます。しかも、環境構築不要でブラウザだけですぐに始められます。

本記事では、プログラミング初心者の方でも理解できるよう、GASの基本構文を1から丁寧に解説します。変数の使い方から条件分岐、繰り返し処理まで、実際に動くサンプルコードを交えながらご紹介します。

業務効率化を実現したい方、プログラミングに興味がある方は、ぜひ最後まで読んでみてください。

スポンサーリンク
  1. Google Apps Script(GAS)とは
    1. 基本的な説明
    2. GASの特徴
    3. GASでできること
  2. 開発環境の準備
    1. スプレッドシートから開く方法(推奨)
    2. スタンドアロンスクリプトの作成方法
    3. スクリプトエディタの画面構成
  3. 基本構文1:変数と定数
    1. 変数の宣言方法
    2. 変数の命名規則
  4. 基本構文2:データ型
    1. 文字列(String)
    2. 数値(Number)
    3. 真偽値(Boolean)
    4. 配列(Array)
    5. オブジェクト(Object)
  5. 基本構文3:演算子
    1. 算術演算子
    2. 代入演算子
    3. 比較演算子
    4. 論理演算子
  6. 基本構文4:条件分岐
    1. if文
    2. if-else文
    3. if-else if-else文
    4. 複数条件の組み合わせ
    5. switch文
  7. 基本構文5:繰り返し処理
    1. for文
    2. 配列のfor文
    3. for…of文(配列用)
    4. for…in文(オブジェクト用)
    5. while文
    6. break文とcontinue文
  8. 基本構文6:関数
    1. 関数の基本
    2. 引数のある関数
    3. 複数の引数
    4. 戻り値のある関数
    5. デフォルト引数
    6. アロー関数
  9. スプレッドシート操作の基本
    1. スプレッドシートを取得
    2. シートを取得
    3. セルの値を取得
    4. セルに値を設定
    5. 範囲の値を取得
    6. 範囲に値を設定
    7. 最終行を取得
  10. Gmail操作の基本
    1. メール送信
    2. HTMLメール送信
    3. 添付ファイル付きメール
    4. 受信メールの検索
  11. ログとデバッグ
    1. console.log()
    2. Logger.log()
    3. デバッグモード
    4. try-catch文(エラーハンドリング)
  12. トリガー設定
    1. トリガーの種類
    2. トリガーの設定方法
    3. 時間主導型トリガーの例
    4. イベント駆動型トリガーの例
  13. 実践的なサンプルコード
    1. サンプル1:データの自動集計
    2. サンプル2:定型メールの一括送信
    3. サンプル3:カスタム関数の作成
    4. サンプル4:Webスクレイピング
    5. サンプル5:データの並び替えと重複削除
  14. よくある質問と回答
    1. Q1:プログラミング未経験でもGASを使えますか?
    2. Q2:GASの実行時間に制限はありますか?
    3. Q3:作成したスクリプトを他の人と共有できますか?
    4. Q4:GASで作成したスクリプトはどこに保存されますか?**
    5. Q5:スクリプトが動かない時はどうすればいいですか?
    6. Q6:GASとExcel VBAの違いは何ですか?
    7. Q7:GASで外部APIを利用できますか?
    8. Q8:スプレッドシートのセルの色を変更できますか?
    9. Q9:作成したスクリプトを公開できますか?
    10. Q10:GASの学習リソースはどこで見つけられますか?
  15. まとめ

Google Apps Script(GAS)とは

基本的な説明

Google Apps Script(通称:GAS、ガス)は、Googleが提供するクラウドベースのスクリプト言語です。

JavaScriptをベースにしており、Google Workspace(Gmail、スプレッドシート、ドキュメント、カレンダーなど)のサービスを操作・自動化できます。

GASの読み方

  • 正式名称:Google Apps Script(グーグル アップス スクリプト)
  • 略称:GAS(ガス、ジーエーエス)

GASの特徴

環境構築が不要

通常のプログラミング言語では、パソコンに開発環境をインストールする必要があります。しかし、GASはブラウザだけで開発できます。

完全無料で利用可能

個人でも企業でも、追加料金なしで利用できます。

Googleサービスとの連携が簡単

専用のAPIが用意されており、スプレッドシートやGmailなどのGoogleサービスを数行のコードで操作できます。

クラウドで実行

コードはGoogleのサーバー上で実行されるため、自分のパソコンの電源を切っていても動作します。

自動実行(トリガー)が設定可能

特定の時刻や曜日、イベント発生時に自動的にスクリプトを実行できます。

GASでできること

スプレッドシートの自動化

  • データの自動集計やレポート作成
  • セルの書式設定やデータ整理
  • カスタム関数の作成

メール操作の自動化

  • 定型メールの自動送信
  • 条件に応じたメール振り分け
  • 添付ファイルの自動保存

カレンダー操作

  • イベントの一括登録
  • リマインダーの自動送信
  • 予定の自動調整

Googleドライブ操作

  • フォルダやファイルの一括作成
  • ファイル名の一括変更
  • バックアップの自動化

外部サービスとの連携

  • WebAPIを使った外部システムとの連携
  • Slackやチャットワークへの通知
  • Webスクレイピング

開発環境の準備

GASを始めるには、Googleアカウントさえあれば大丈夫です。

スプレッドシートから開く方法(推奨)

この方法が最も簡単で、初心者におすすめです。

手順1:スプレッドシートを開く

Googleスプレッドシートを新規作成します。

ブラウザのアドレスバーに sheets.new と入力すると、即座に新しいスプレッドシートが開きます。

手順2:スクリプトエディタを開く

メニューバーから「拡張機能」→「Apps Script」を選択します。

手順3:スクリプトエディタが表示される

新しいタブでスクリプトエディタが開きます。

最初は以下のような初期コードが表示されています。

function myFunction() {

}

このコードを削除または編集して、自分のスクリプトを書いていきます。

スタンドアロンスクリプトの作成方法

スプレッドシートに紐付けずに、独立したスクリプトを作成することもできます。

手順1:Googleドライブを開く

Googleドライブ(https://drive.google.com)にアクセスします。

手順2:新規作成

左上の「新規」ボタンをクリックします。

手順3:Google Apps Scriptを選択

「その他」→「Google Apps Script」を選択します。

スクリプトエディタが開きます。

スクリプトエディタの画面構成

コードエディタ

中央の大きなエリアがコードを書く場所です。

実行ボタン

上部にある「▶」ボタンで、書いたコードを実行できます。

関数選択

実行ボタンの隣のドロップダウンメニューで、実行する関数を選択できます。

ログ

「実行ログ」ボタンをクリックすると、実行結果やエラーメッセージが表示されます。

プロジェクト名

左上の「無題のプロジェクト」をクリックすると、プロジェクト名を変更できます。

基本構文1:変数と定数

変数は、データを一時的に保存する「箱」のようなものです。

変数の宣言方法

GASでは、3種類の方法で変数を宣言できます。

let name = "田中";     // 再代入可能な変数
const age = 30;        // 再代入不可能な定数
var city = "東京";     // 古い書き方(非推奨)

let(レット)

最も一般的な変数宣言です。後から値を変更できます。

let score = 80;
score = 90;  // 変更可能

const(コンスト)

値を変更しない定数を宣言します。

const TAX_RATE = 0.1;  // 消費税率
// TAX_RATE = 0.08;  // エラー!変更できません

var(バー)

古い書き方で、不具合が起きやすいため使用は推奨されません。基本的にletを使いましょう。

変数の命名規則

使える文字

  • 英数字(a-z、A-Z、0-9)
  • アンダースコア(_)
  • ドルマーク($)

ルール

  • 数字で始めることはできない
  • 予約語(function、if、forなど)は使えない
  • 大文字と小文字は区別される

良い例

let userName = "山田";      // キャメルケース(推奨)
let user_name = "佐藤";     // スネークケース
const MAX_COUNT = 100;      // 定数は全て大文字

悪い例

let 1name = "田中";         // エラー:数字で始まっている
let user-name = "鈴木";     // エラー:ハイフンは使えない
let function = "test";      // エラー:予約語

基本構文2:データ型

JavaScriptには、様々なデータ型があります。

文字列(String)

文字列は、シングルクォート、ダブルクォート、バッククォートのいずれかで囲みます。

let name1 = 'tanaka';        // シングルクォート
let name2 = "yamada";        // ダブルクォート
let message = `こんにちは`;  // バッククォート

文字列の結合

let firstName = "太郎";
let lastName = "山田";
let fullName = lastName + " " + firstName;  // "山田 太郎"

テンプレートリテラル(バッククォート)

変数を文字列に埋め込む便利な方法です。

let name = "田中";
let age = 25;
let message = `私の名前は${name}で、${age}歳です。`;
// 結果: "私の名前は田中で、25歳です。"

数値(Number)

整数も小数も同じNumber型です。

let integer = 100;          // 整数
let decimal = 3.14;         // 小数
let negative = -50;         // 負の数

算術演算

let sum = 10 + 5;           // 15(加算)
let diff = 10 - 5;          // 5(減算)
let product = 10 * 5;       // 50(乗算)
let quotient = 10 / 5;      // 2(除算)
let remainder = 10 % 3;     // 1(剰余)

真偽値(Boolean)

trueまたはfalseの2つの値のみを持ちます。

let isOpen = true;
let isCompleted = false;

配列(Array)

複数の値を順番に格納できます。

let fruits = ["りんご", "バナナ", "オレンジ"];
let numbers = [1, 2, 3, 4, 5];
let mixed = ["文字列", 123, true];  // 異なる型も混在可能

配列の要素にアクセス

インデックス(位置)は0から始まります。

let fruits = ["りんご", "バナナ", "オレンジ"];
console.log(fruits[0]);  // "りんご"
console.log(fruits[1]);  // "バナナ"
console.log(fruits[2]);  // "オレンジ"

配列の長さを取得

let fruits = ["りんご", "バナナ", "オレンジ"];
let length = fruits.length;  // 3

オブジェクト(Object)

キーと値のペアでデータを管理します。

let person = {
  name: "田中太郎",
  age: 30,
  email: "tanaka@example.com"
};

オブジェクトの値にアクセス

console.log(person.name);       // "田中太郎"
console.log(person["age"]);     // 30

基本構文3:演算子

算術演算子

let a = 10;
let b = 3;

console.log(a + b);  // 13(加算)
console.log(a - b);  // 7(減算)
console.log(a * b);  // 30(乗算)
console.log(a / b);  // 3.333...(除算)
console.log(a % b);  // 1(剰余)

代入演算子

let x = 10;
x += 5;   // x = x + 5  → 15
x -= 3;   // x = x - 3  → 12
x *= 2;   // x = x * 2  → 24
x /= 4;   // x = x / 4  → 6

比較演算子

let a = 10;
let b = 20;

console.log(a == b);   // false(等しい)
console.log(a != b);   // true(等しくない)
console.log(a < b);    // true(小さい)
console.log(a > b);    // false(大きい)
console.log(a <= b);   // true(以下)
console.log(a >= b);   // false(以上)
console.log(a === b);  // false(厳密に等しい)

==と===の違い

console.log(10 == "10");   // true(型変換してから比較)
console.log(10 === "10");  // false(型も含めて厳密に比較)

基本的には===を使うことを推奨します。

論理演算子

let a = true;
let b = false;

console.log(a && b);  // false(AND:両方ともtrueの場合のみtrue)
console.log(a || b);  // true(OR:どちらかがtrueならtrue)
console.log(!a);      // false(NOT:反転)

基本構文4:条件分岐

条件によって処理を分岐させます。

if文

let score = 85;

if (score >= 80) {
  console.log("合格です");
}

if-else文

let score = 65;

if (score >= 80) {
  console.log("合格です");
} else {
  console.log("不合格です");
}

if-else if-else文

let score = 75;

if (score >= 80) {
  console.log("優");
} else if (score >= 70) {
  console.log("良");
} else if (score >= 60) {
  console.log("可");
} else {
  console.log("不可");
}

複数条件の組み合わせ

let age = 25;
let hasLicense = true;

if (age >= 18 && hasLicense) {
  console.log("運転できます");
} else {
  console.log("運転できません");
}

switch文

多岐分岐の場合はswitch文も使えます。

let day = "月曜日";

switch (day) {
  case "月曜日":
    console.log("会議の日です");
    break;
  case "水曜日":
    console.log("ノー残業デーです");
    break;
  case "金曜日":
    console.log("週報提出日です");
    break;
  default:
    console.log("通常業務です");
}

基本構文5:繰り返し処理

同じ処理を繰り返し実行します。

for文

指定した回数だけ繰り返します。

for (let i = 0; i < 5; i++) {
  console.log(i);  // 0, 1, 2, 3, 4
}

構文の説明

for (初期化; 条件式; 増減式) {
  // 繰り返す処理
}

実用例

for (let i = 1; i <= 10; i++) {
  console.log(`${i}番目の処理`);
}

配列のfor文

let fruits = ["りんご", "バナナ", "オレンジ"];

for (let i = 0; i < fruits.length; i++) {
  console.log(fruits[i]);
}

for…of文(配列用)

配列の要素を順番に取り出します。

let fruits = ["りんご", "バナナ", "オレンジ"];

for (let fruit of fruits) {
  console.log(fruit);
}
// りんご
// バナナ
// オレンジ

for…in文(オブジェクト用)

オブジェクトのキーを順番に取り出します。

let person = {
  name: "田中",
  age: 30,
  city: "東京"
};

for (let key in person) {
  console.log(`${key}: ${person[key]}`);
}
// name: 田中
// age: 30
// city: 東京

while文

条件がtrueの間、繰り返します。

let count = 0;

while (count < 5) {
  console.log(count);
  count++;
}
// 0, 1, 2, 3, 4

break文とcontinue文

break:ループを抜ける

for (let i = 0; i < 10; i++) {
  if (i === 5) {
    break;  // i=5の時点でループを終了
  }
  console.log(i);
}
// 0, 1, 2, 3, 4

continue:次のループへ

for (let i = 0; i < 5; i++) {
  if (i === 2) {
    continue;  // i=2の時はスキップ
  }
  console.log(i);
}
// 0, 1, 3, 4

基本構文6:関数

関数は、処理をまとめて名前を付けたものです。

関数の基本

function greet() {
  console.log("こんにちは!");
}

greet();  // 関数を実行

引数のある関数

function greet(name) {
  console.log(`こんにちは、${name}さん!`);
}

greet("田中");  // "こんにちは、田中さん!"
greet("山田");  // "こんにちは、山田さん!"

複数の引数

function add(a, b) {
  let sum = a + b;
  console.log(`${a} + ${b} = ${sum}`);
}

add(5, 3);   // "5 + 3 = 8"
add(10, 20); // "10 + 20 = 30"

戻り値のある関数

function add(a, b) {
  return a + b;
}

let result = add(5, 3);
console.log(result);  // 8

デフォルト引数

引数が省略された場合のデフォルト値を設定できます。

function greet(name = "ゲスト") {
  console.log(`こんにちは、${name}さん!`);
}

greet("田中");  // "こんにちは、田中さん!"
greet();        // "こんにちは、ゲストさん!"

アロー関数

短く書ける関数の記法です。

// 通常の関数
function add(a, b) {
  return a + b;
}

// アロー関数
const add = (a, b) => {
  return a + b;
};

// さらに短く(1行の場合)
const add = (a, b) => a + b;

スプレッドシート操作の基本

GASの最も一般的な用途は、スプレッドシートの操作です。

スプレッドシートを取得

function getSpreadsheet() {
  // アクティブなスプレッドシートを取得
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  console.log(spreadsheet.getName());
}

シートを取得

function getSheet() {
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // アクティブなシートを取得
  let sheet = spreadsheet.getActiveSheet();

  // または、名前でシートを取得
  let sheet2 = spreadsheet.getSheetByName("シート1");

  console.log(sheet.getName());
}

セルの値を取得

function getCellValue() {
  let sheet = SpreadsheetApp.getActiveSheet();

  // A1セルの値を取得
  let value = sheet.getRange("A1").getValue();
  console.log(value);

  // B2セルの値を取得
  let value2 = sheet.getRange(2, 2).getValue();  // (行, 列)
  console.log(value2);
}

セルに値を設定

function setCellValue() {
  let sheet = SpreadsheetApp.getActiveSheet();

  // A1セルに値を設定
  sheet.getRange("A1").setValue("こんにちは");

  // B2セルに数値を設定
  sheet.getRange(2, 2).setValue(100);
}

範囲の値を取得

function getRangeValues() {
  let sheet = SpreadsheetApp.getActiveSheet();

  // A1:B3の範囲を取得
  let values = sheet.getRange("A1:B3").getValues();

  // valuesは二次元配列
  console.log(values[0][0]);  // A1の値
  console.log(values[0][1]);  // B1の値
  console.log(values[1][0]);  // A2の値
}

範囲に値を設定

function setRangeValues() {
  let sheet = SpreadsheetApp.getActiveSheet();

  // 二次元配列を作成
  let data = [
    ["名前", "年齢"],
    ["田中", 30],
    ["山田", 25]
  ];

  // A1から2列3行に値を設定
  sheet.getRange(1, 1, 3, 2).setValues(data);
}

最終行を取得

function getLastRow() {
  let sheet = SpreadsheetApp.getActiveSheet();

  // データがある最終行を取得
  let lastRow = sheet.getLastRow();
  console.log(`最終行: ${lastRow}`);

  // 最終行の次の行に追加
  sheet.getRange(lastRow + 1, 1).setValue("新しいデータ");
}

Gmail操作の基本

メール送信

function sendEmail() {
  let recipient = "example@gmail.com";
  let subject = "テストメール";
  let body = "これはGASから送信したテストメールです。";

  GmailApp.sendEmail(recipient, subject, body);
}

HTMLメール送信

function sendHtmlEmail() {
  let recipient = "example@gmail.com";
  let subject = "HTMLメール";
  let body = "プレーンテキスト版";
  let htmlBody = "<h1>見出し</h1><p>これは<strong>HTML</strong>メールです。</p>";

  GmailApp.sendEmail(recipient, subject, body, {
    htmlBody: htmlBody
  });
}

添付ファイル付きメール

function sendEmailWithAttachment() {
  let recipient = "example@gmail.com";
  let subject = "添付ファイル付きメール";
  let body = "ファイルを添付しました。";

  // Googleドライブからファイルを取得
  let file = DriveApp.getFileById("ファイルID");

  GmailApp.sendEmail(recipient, subject, body, {
    attachments: [file.getAs(MimeType.PDF)]
  });
}

受信メールの検索

function searchEmails() {
  // "重要"ラベルの未読メールを検索
  let threads = GmailApp.search("label:important is:unread", 0, 10);

  for (let thread of threads) {
    let messages = thread.getMessages();
    for (let message of messages) {
      console.log(message.getSubject());
      console.log(message.getFrom());
    }
  }
}

ログとデバッグ

console.log()

最も基本的なログ出力方法です。

function testLog() {
  let name = "田中";
  console.log(name);  // "田中"と表示

  let age = 30;
  console.log(`${name}さんは${age}歳です`);
}

実行後、「実行ログ」ボタンをクリックするとログが表示されます。

Logger.log()

GAS独自のログ出力方法です。

function testLogger() {
  Logger.log("これはログです");
  Logger.log(123);
  Logger.log(true);
}

実行後、「ログ」→「実行ログ」で確認できます。

デバッグモード

ブレークポイントの設定

コードの行番号の左側をクリックすると、赤い丸(ブレークポイント)が表示されます。

デバッグ実行

上部の虫のアイコン(デバッグ)ボタンをクリックすると、ブレークポイントで処理が一時停止します。

変数の値を確認しながら、1行ずつ実行できます。

try-catch文(エラーハンドリング)

function errorHandling() {
  try {
    // エラーが発生する可能性のある処理
    let sheet = SpreadsheetApp.getActiveSheet();
    let value = sheet.getRange("A1").getValue();

    if (value === "") {
      throw new Error("A1セルが空です");
    }

    console.log(value);

  } catch (error) {
    // エラーが発生した時の処理
    console.log(`エラーが発生しました: ${error.message}`);
  }
}

トリガー設定

スクリプトを自動実行するための設定です。

トリガーの種類

時間主導型

特定の時刻や間隔で実行します。

イベント駆動型

スプレッドシートの編集時やフォーム送信時に実行します。

トリガーの設定方法

手順1:トリガー画面を開く

スクリプトエディタの左側メニューから「トリガー」(時計のアイコン)をクリックします。

手順2:トリガーを追加

右下の「トリガーを追加」ボタンをクリックします。

手順3:設定

  • 実行する関数を選択
  • イベントのソースを選択(時間主導型/スプレッドシートから など)
  • 実行タイミングを設定

手順4:保存

「保存」をクリックします。初回は権限の承認が必要です。

時間主導型トリガーの例

// 毎日午前9時に実行される関数
function dailyReport() {
  let sheet = SpreadsheetApp.getActiveSheet();
  let lastRow = sheet.getLastRow();

  // 昨日のデータを集計
  let data = sheet.getRange(2, 1, lastRow - 1, 5).getValues();

  // メールで送信
  let message = "本日の集計結果:\n\n";
  // ... 集計処理 ...

  GmailApp.sendEmail("manager@example.com", "日次レポート", message);
}

トリガー設定で「毎日午前9時〜10時」を選択すれば、自動実行されます。

イベント駆動型トリガーの例

// スプレッドシート編集時に自動実行
function onEdit(e) {
  let sheet = e.source.getActiveSheet();
  let range = e.range;

  // A列が編集された場合、B列に日時を記録
  if (range.getColumn() === 1) {
    let row = range.getRow();
    sheet.getRange(row, 2).setValue(new Date());
  }
}

この関数名 onEdit は特別な名前で、スプレッドシートが編集されると自動的に実行されます。

実践的なサンプルコード

サンプル1:データの自動集計

function calculateTotal() {
  let sheet = SpreadsheetApp.getActiveSheet();

  // B2:B10の範囲の合計を計算
  let range = sheet.getRange("B2:B10");
  let values = range.getValues();

  let total = 0;
  for (let row of values) {
    total += row[0];  // 各行の最初の列(B列)を加算
  }

  // 合計をB11セルに出力
  sheet.getRange("B11").setValue(total);

  console.log(`合計: ${total}`);
}

サンプル2:定型メールの一括送信

function sendBulkEmails() {
  let sheet = SpreadsheetApp.getActiveSheet();
  let lastRow = sheet.getLastRow();

  // A列にメールアドレス、B列に名前があると仮定
  let data = sheet.getRange(2, 1, lastRow - 1, 2).getValues();

  for (let row of data) {
    let email = row[0];
    let name = row[1];

    if (email) {  // メールアドレスが空でない場合
      let subject = "重要なお知らせ";
      let body = `${name}様\n\nお世話になっております。\n\n...`;

      GmailApp.sendEmail(email, subject, body);

      // 送信完了をログに記録
      console.log(`${email}に送信完了`);
    }
  }

  console.log("一括送信完了");
}

サンプル3:カスタム関数の作成

スプレッドシートのセルで使える独自の関数を作成できます。

/**
 * 消費税込み価格を計算する
 * @param {number} price 税抜価格
 * @param {number} taxRate 税率(省略可、デフォルト0.1)
 * @return {number} 税込価格
 * @customfunction
 */
function TAX_INCLUDED(price, taxRate) {
  taxRate = taxRate || 0.1;  // 省略時は10%
  return Math.round(price * (1 + taxRate));
}

スプレッドシートのセルで以下のように使用できます。

=TAX_INCLUDED(1000)      // 1100
=TAX_INCLUDED(1000, 0.08)  // 1080

サンプル4:Webスクレイピング

function scrapeWebsite() {
  let url = "https://example.com";
  let response = UrlFetchApp.fetch(url);
  let content = response.getContentText();

  // HTMLから特定の情報を抽出
  // (実際には正規表現やHTMLパーサーを使用)

  console.log(content);
}

サンプル5:データの並び替えと重複削除

function sortAndRemoveDuplicates() {
  let sheet = SpreadsheetApp.getActiveSheet();
  let lastRow = sheet.getLastRow();

  // A列のデータを取得
  let data = sheet.getRange(1, 1, lastRow, 1).getValues();

  // 重複を削除(Setを使用)
  let uniqueData = [...new Set(data.flat())];

  // ソート
  uniqueData.sort();

  // B列に出力
  for (let i = 0; i < uniqueData.length; i++) {
    sheet.getRange(i + 1, 2).setValue(uniqueData[i]);
  }

  console.log(`${uniqueData.length}件のユニークなデータ`);
}

よくある質問と回答

Q1:プログラミング未経験でもGASを使えますか?

A:はい、使えます。

GASは初心者向けの言語で、サンプルコードも豊富です。本記事で紹介した基本構文から始めて、徐々に複雑な処理に挑戦していけば大丈夫です。

まずは簡単なスクリプトをコピー&ペーストして動かしてみることから始めましょう。

Q2:GASの実行時間に制限はありますか?

A:はい、あります。

  • スクリプトの実行時間:1回あたり最大6分
  • カスタム関数の実行時間:1処理あたり最大30秒

この制限は無料アカウントでも有料のGoogle Workspaceアカウントでも同じです。

6分を超える処理が必要な場合は、処理を分割する必要があります。

Q3:作成したスクリプトを他の人と共有できますか?

A:はい、できます。

方法1:スプレッドシートごと共有

スプレッドシートを共有すれば、紐付けられたスクリプトも一緒に共有されます。

方法2:スタンドアロンスクリプトの共有

Googleドライブ上のスクリプトファイルを共有します。

ただし、他の人が実行する際は、その人のアカウントで権限の承認が必要です。

Q4:GASで作成したスクリプトはどこに保存されますか?**

A:Googleドライブに自動的に保存されます。

コンテナバインド型

スプレッドシートやドキュメントに紐付けられたスクリプトは、そのファイルと一緒に保存されます。

スタンドアロン型

独立したスクリプトは、Googleドライブのルートまたは指定したフォルダーに保存されます。

Q5:スクリプトが動かない時はどうすればいいですか?

A:以下を確認してください。

実行ログを確認

「実行ログ」ボタンをクリックして、エラーメッセージを確認します。

権限の承認

初めて実行する際は、権限の承認が必要です。エラーメッセージの指示に従ってください。

構文エラー

コードに文法的な誤りがないか確認します。セミコロンや括弧の閉じ忘れなど。

関数名の確認

実行する関数名が正しく選択されているか確認します。

Q6:GASとExcel VBAの違いは何ですか?

A:主な違いは以下の通りです。

実行環境

  • GAS:クラウド(Googleのサーバー)で実行
  • VBA:ローカル(自分のパソコン)で実行

言語

  • GAS:JavaScript
  • VBA:Visual Basic

対象アプリ

  • GAS:Googleスプレッドシート、Gmail、カレンダーなど
  • VBA:Microsoft Excel、Word、Accessなど

自動実行

  • GAS:パソコンの電源が切れていても実行可能
  • VBA:パソコンが起動している必要がある

Q7:GASで外部APIを利用できますか?

A:はい、できます。

UrlFetchAppを使用して、外部のWeb APIにリクエストを送信できます。

function callExternalAPI() {
  let url = "https://api.example.com/data";
  let options = {
    "method": "GET",
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  };

  let response = UrlFetchApp.fetch(url, options);
  let data = JSON.parse(response.getContentText());

  console.log(data);
}

Q8:スプレッドシートのセルの色を変更できますか?

A:はい、できます。

function changeColor() {
  let sheet = SpreadsheetApp.getActiveSheet();
  let range = sheet.getRange("A1");

  // 背景色を変更
  range.setBackground("#FF0000");  // 赤色

  // 文字色を変更
  range.setFontColor("#FFFFFF");  // 白色
}

Q9:作成したスクリプトを公開できますか?

A:はい、アドオンとして公開できます。

Google Workspace Marketplaceにアドオンを公開すれば、世界中の人が使用できます。

ただし、公開には審査があり、セキュリティやプライバシーの基準を満たす必要があります。

Q10:GASの学習リソースはどこで見つけられますか?

A:以下のリソースがおすすめです。

公式ドキュメント

Google Apps Script公式ドキュメント(英語)
https://developers.google.com/apps-script

日本語の学習サイト

  • Qiita(キータ):日本語の技術記事が豊富
  • Zenn:新しい技術記事プラットフォーム
  • いつも隣にITのお仕事:初心者向けの丁寧な解説

YouTubeチャンネル

Google Workspace Developers公式チャンネルなど

オンラインコース

Udemy、Udemyなどの学習プラットフォームにGAS講座があります。

まとめ

Google Apps Script(GAS)の基本構文について、詳しく解説してきました。

本記事のポイント

  1. GASはGoogleサービスを自動化できる無料のツール
  2. ブラウザだけで開発できる(環境構築不要)
  3. JavaScriptベースで初心者にも学びやすい
  4. スプレッドシート、Gmail、カレンダーなど様々なサービスと連携可能

基本構文のまとめ

変数と定数

let name = "田中";      // 変数
const TAX = 0.1;        // 定数

データ型

  • 文字列:"こんにちは"
  • 数値:100
  • 真偽値:true / false
  • 配列:["a", "b", "c"]
  • オブジェクト:{name: "田中", age: 30}

条件分岐

if (条件) {
  // 処理
} else {
  // 処理
}

繰り返し

for (let i = 0; i < 5; i++) {
  // 処理
}

関数

function myFunction() {
  // 処理
}

スプレッドシート操作

let sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange("A1").setValue("こんにちは");

Gmail操作

GmailApp.sendEmail(recipient, subject, body);

学習の進め方

ステップ1:基本構文の理解

本記事で紹介した変数、条件分岐、繰り返し、関数の基本を理解しましょう。

ステップ2:サンプルコードを動かす

コピー&ペーストで良いので、実際にコードを動かしてみましょう。

ステップ3:少しずつ改造

サンプルコードの数値や文字列を変更して、動作を確認しましょう。

ステップ4:自分の課題を解決

実際の業務で困っていることを自動化してみましょう。

ステップ5:エラーに慣れる

エラーは学習のチャンスです。エラーメッセージを読んで、修正方法を学びましょう。

GASの活用例

  • 日次レポートの自動作成と送信
  • データの自動集計とグラフ化
  • フォーム回答の自動処理
  • 定型メールの自動送信
  • カレンダーイベントの一括登録
  • ファイルの自動整理とバックアップ
  • 外部APIとの連携

最後に

GASは、プログラミング初心者でも実用的な自動化を実現できる強力なツールです。

最初は難しく感じるかもしれませんが、まずは簡単なコードから始めて、少しずつ複雑な処理に挑戦していけば、必ず使いこなせるようになります。

本記事で紹介した基本構文をマスターすれば、日々の業務を大幅に効率化できるでしょう。ぜひ実際に手を動かして、GASの便利さを体験してください!

コメント

タイトルとURLをコピーしました