こんにちは、凛です。2児のママで現役ナース。夜勤明けの細切れ時間を副業GASに投じ、月5〜8万円の副収入を継続中。「看護師でもコードは書ける」を合言葉に、家事育児とプログラミングを両立する等身大の情報を発信しています。本記事のコードは静的検証済みです(構文・API仕様・ロジックを確認)。ふだん案件でReact/Node.jsを書いていて、GASにも触れると「この違い、最初に知っておきたかった…」と思う場面が多々あります。今日はGASとJavaScriptの違い7つを、初心者向けに図解ベースでまとめます。
「GAS JavaScript 違い」で検索してここに来た方が、読み終わった直後にすぐ手を動かせるレベルで書いています。
こんな悩みありませんか?
- 「JavaScriptができればGASもできるって聞いたけど、本当?」
- 「ブラウザのJSと同じ感覚で書くと動かないことがある」
- 「
fetchが使えないって本当?」 - 「V8ランタイムにしたけど、何が変わったのかイマイチわからない」
- 「GASのサンプルコードで出てくる
SpreadsheetAppって何者?」
私も最初の頃、ブラウザJSの癖で localStorage.setItem() と書いて「ReferenceError」を食らったことがあります。7つの違いさえ頭に入れておけば、JS経験者はGASでもすぐに戦力化できます。
違い全体像:早見表
| 観点 | ブラウザJavaScript | GAS (V8) |
|---|---|---|
| 1. 実行環境 | ブラウザ | Googleサーバー |
| 2. DOM/Window | あり | なし |
| 3. HTTP通信 | fetch | UrlFetchApp.fetch |
| 4. グローバル関数 | alert/console | Logger.log/console.log |
| 5. Googleサービス | なし | SpreadsheetApp等が使える |
| 6. 非同期処理 | async/await | 同期処理のみ |
| 7. 実行時間 | 無制限 | 6分制限 |
この7つが頭に入っていれば、JSの知識はほぼそのままGASで使えます。
違い1:実行環境が違う(サーバーサイド)
ブラウザJSはユーザーのPC上で動きますが、GASはGoogleのサーバー上で動きます。
ブラウザJS: ユーザーPC → ブラウザ内で実行
GAS: リクエスト → Googleサーバーで実行 → 結果を返す
つまりGASはサーバーサイドJS。Node.jsに近い立ち位置です。
何が変わる?
- クライアント情報(マウス位置・ウィンドウサイズ等)は取得不可
- ユーザーの入力をリアルタイムで受ける仕組みは別途必要(Webアプリ化)
- 代わりにGoogleアカウント連携が当然のようにできる
違い2:DOM・Windowオブジェクトが存在しない
ブラウザJSの主役であるDOM操作はGASでは一切できません。
// ブラウザJS:DOMを触る
document.getElementById('button').addEventListener('click', ...);
// GAS:そもそも document が存在しない
document.getElementById(...); // ReferenceError!
document・window・localStorage・sessionStorageも全部なし- 代わりに
PropertiesServiceで永続データ保存
// GASでの localStorage 代替
PropertiesService.getScriptProperties().setProperty('key', 'value');
const v = PropertiesService.getScriptProperties().getProperty('key');
違い3:HTTP通信はUrlFetchApp
ブラウザのfetchはGASでは使えません。代わりにUrlFetchApp.fetchを使います。
// ブラウザJS
const res = await fetch('https://api.example.com/data');
const data = await res.json();
// GAS
const res = UrlFetchApp.fetch('https://api.example.com/data');
const data = JSON.parse(res.getContentText());
- 同期処理で返ってくる(awaitは不要)
- 認証ヘッダは
headersオプション - タイムアウトやリトライは自前で実装
違い4:グローバル関数が違う
| やりたいこと | ブラウザJS | GAS |
|---|---|---|
| ログ出力 | console.log | console.log(V8で可) or Logger.log |
| アラート表示 | alert | Browser.msgBox(シート限定) |
| タイマー | setTimeout | なし(代わりにUtilities.sleep) |
| JSON解析 | JSON.parse | JSON.parse(共通) |
V8ランタイム以降、console.logは使えるようになりました。alertは完全に無し。ユーザーに通知するならSpreadsheetApp.getUi().alert()などを使います。
違い5:Googleサービスが自然に使える
これがGAS最大の魅力。
// スプレッドシートを操作
const ss = SpreadsheetApp.getActiveSpreadsheet();
// Gmailを送る
GmailApp.sendEmail('to@example.com', '件名', '本文');
// カレンダーに予定登録
CalendarApp.getDefaultCalendar().createEvent('申し送り', new Date(), new Date());
// Driveにファイル作成
DriveApp.createFile('test.txt', 'content');
ブラウザJSでこれをやろうとすると、OAuth認証・APIキー管理・CORSエラー対応…と大仕事。GASは最初からGoogleアカウント連携済みなので、この面倒が全部消えます。
違い6:非同期処理がない(全部同期)
V8ランタイムでasync/await構文は書けるようになりましたが、GASのAPIはすべて同期です。
// GASのAPIは同期で返ってくる
const values = sheet.getDataRange().getValues(); // await不要
// UrlFetchApp も同期
const res = UrlFetchApp.fetch(url);
並列実行もなし。処理は上から下へ直線的に進みます。
裏技:Promise.all風の並列処理が欲しい時
UrlFetchApp.fetchAll()を使うと、複数HTTPリクエストを並列で叩けます。ただし一般の関数を並列実行する仕組みはないので、大量データは別トリガーに分割するのが定石。
違い7:6分の実行時間制限
GASには「1回の実行で6分まで」という制限があります(Google Workspace有料版は30分)。
これを超えるとトリガーは強制終了し、以降の処理は失われます。
対策
- 一度に処理するデータ量を小さく分割
- スクリプトプロパティに進捗を保存して、次回トリガーで続きから実行
Utilities.sleepの濫用を避ける(待ち時間も6分にカウント)
詳しくは GAS6分制限を回避する3パターン完全解説 で。
V8ランタイム移行で何が変わった?
GASは2020年にV8ランタイム対応でモダンJSほぼそのまま使えるようになりました。
| 文法 | V8以前 | V8以降 |
|---|---|---|
const / let | ❌ | ✅ |
| アロー関数 | ❌ | ✅ |
| テンプレートリテラル | ❌ | ✅ |
| 分割代入 | ❌ | ✅ |
| デフォルト引数 | ❌ | ✅ |
class構文 | ❌ | ✅ |
async/await構文 | ❌ | ✅(書けるがAPIは同期) |
| スプレッド構文 | ❌ | ✅ |
2020年以前の古いサンプルコードはvarベースで書かれていることが多いですが、2026年の現役プロジェクトは全部V8前提でOKです。
まとめ
- GASはサーバーサイドJS。DOM/Window/localStorageは使えない
fetchの代わりにUrlFetchApp、alertの代わりにBrowser.msgBox- Googleサービス(Spreadsheet/Gmail/Calendar/Drive)が自然に使える
- V8ランタイムで
const/let/アロー関数/分割代入等のモダン文法OK - APIは全て同期。6分制限は必ず意識
- ブラウザJSとの違いさえ押さえれば、JS経験者は即戦力
GASは「ブラウザJSの変種」ではなく、**「Googleインフラ前提のJSサーバーサイドランタイム」**と捉えると理解が早いです。Node.jsに近いけれど、デプロイ不要・インフラ意識不要で手軽に動く、と考えると強みが見えてきます。
📚 さらに学ぶための参考書籍
PR:本記事には広告(楽天市場)が含まれます
GASやJavaScriptを体系的に学びたい方は、書籍も併用するのが効率的です。 日本語の解説書が複数出ているので、自分のレベルに合うものを選んでみてください。
👉 楽天市場 で「Google Apps Script」または「JavaScript 入門」を検索
関連記事
この記事を書いた人:凛
2児のママで現役ナース。夜勤明けの細切れ時間を副業GASに投じ、月5〜8万円の副収入を継続中。「看護師でもコードは書ける」を合言葉に、家事育児とプログラミングを両立する等身大の情報を発信しています。本記事のコードは静的検証済みです(構文・API仕様・ロジックを確認)。