本サイトはアフィリエイト広告(A8.net/もしもアフィリエイト/アクセストレード等)を利用しています
GASとJavaScriptの違い7つ初心者向け図解|V8ランタイムで何が変わった?
📂 GAS入門

GASとJavaScriptの違い7つ初心者向け図解|V8ランタイムで何が変わった?

📅 ⏱ 読了 約9分 ✍️ 凛

💡 本記事には広告(アフィリエイトリンク)が含まれる場合があります。

こんにちは、凛です。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でもすぐに戦力化できます。

違い全体像:早見表

観点ブラウザJavaScriptGAS (V8)
1. 実行環境ブラウザGoogleサーバー
2. DOM/Windowありなし
3. HTTP通信fetchUrlFetchApp.fetch
4. グローバル関数alert/consoleLogger.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!
  • documentwindowlocalStoragesessionStorage全部なし
  • 代わりに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:グローバル関数が違う

やりたいことブラウザJSGAS
ログ出力console.logconsole.log(V8で可) or Logger.log
アラート表示alertBrowser.msgBox(シート限定)
タイマーsetTimeoutなし(代わりにUtilities.sleep
JSON解析JSON.parseJSON.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の代わりにUrlFetchAppalertの代わりに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仕様・ロジックを確認)。