コラム

2026年4月13日

GAS×スプレッドシート入門ガイド コピペで使えるコード付き

毎日の売上データの転記や、未対応案件の確認、関係者への通知作業に追われていませんか。スプレッドシート業務は身近ですが、手作業が増えるほどミスや漏れも起こりやすくなります。とはいえ、「自動化したいけれどプログラミングは難しそう」と、最初の一歩で止まってしまう方も多いでしょう。
そこで役立つのが、Googleの無料機能であるGAS(Google Apps Script)です。GASを使えば、非エンジニアでも日々の定型業務をスプレッドシート上で少しずつ自動化できます。
本記事では、実務でそのまま使えるコピペ用コードと、自分用に直すための書き換えポイントを解説します。手作業のミスを減らし、確認や通知に取られる時間を抑え、本来集中したい業務に使える時間を増やしていきましょう。

【目次】

  1. 毎日のスプレッドシート作業、GASで自動化しませんか?
  2. 超入門!スプレッドシートでのGASの開き方と最初の設定
  3. 【コピペで動く】そのまま実務で使えるGASサンプルコード3選
    1. 実例①:別シートの特定のデータを条件に合わせて自動転記する
    2. 実例②:期限切れのタスク一覧をSlackに自動通知する
    3. 実例③:毎日朝9時にスクリプトを自動で動かす(トリガー設定)
  4. 【注意】GAS運用に潜む「属人化」のリスクとは?
  5. まとめ:GASで小さな自動化を始め、組織全体の効率化へ

="いま話題の「RPA導入事例集」をご存じですか?"
⇒導入事例集のダウンロードはこちらから

毎日のスプレッドシート作業、GASで自動化しませんか?

GAS(Google Apps Script)とは?無料で使える自動化ツール

Googleが提供している自動化ツールで、スプレッドシートやGmail、カレンダーなどを自動で動かす仕組みとして使われています。ベースになっているのは、JavaScriptという、Webサービス開発でも広く使われる言語です。ただし最初は深く覚えなくても、「Googleサービスを自動で動かせる機能」とシンプルに理解しておけば十分です。
GASの大きな魅力は、無料で始めやすい点にあります。Googleアカウントがあればすぐに利用可能で、ブラウザでスプレッドシートを開き、そのまま設定やコード入力に進めます。コストをかけずに試しやすいのが特長です。

Excelマクロ(VBA)との違いは「クラウド連携」の強さ

Excelマクロにも自動化の強みがありますが、GASはクラウド連携のしやすさで優位です。違いを大まかに整理すると、次のとおりです。

比較項目VBA(Excelマクロ)GAS(スプレッドシート)
動く場所パソコン内のExcelで動くクラウド上で動く
得意な作業ローカルファイルの操作スプレッドシートやGmail連携
外部ツール連携やや手間がかかる比較的かんたんに連携可能
自動実行パソコン起動が前提パソコンがオフでも実行
向いている用途手元のExcel業務の自動化通知・集計・共有を含む自動化
リモートワークでの自動化を実現する「RPA導入事例集」とは?
⇒導入事例集のダウンロードはこちらから

超入門!スプレッドシートでのGASの開き方と最初の設定

ステップ1:スクリプトエディタの起動方法

まずは、自動化したいスプレッドシートを開きます。普段の業務で使っているファイルをそのまま使って大丈夫です。次に、画面上部のメニューから「拡張機能」をクリックしてください。その中にある「Apps Script」を選びます。すると、別画面で「無題のプロジェクト」が開きます。

ここが、GASのコードを入力する場所です。最初は見慣れない画面に感じるかもしれませんが、使う場所はそれほど多くありません。基本的には、中央の広い欄を見れば十分です。
初期状態では、「function myFunction() { }」という文字が入っていることがあります。これは最初から入っているサンプルなので、いったん消して問題ありません。今後はここに、記事内のコードをコピペして使います。

ステップ2:【最重要】初回実行時の「権限承認」エラーの突破方法

初心者が最もつまずきやすいのが、この最初の承認です。警告画面が出るため、「失敗した」と感じて閉じてしまう人が少なくありません。しかし、これはエラーではなく、自分のGoogleアカウントで動かしてよいかを確認するための手順です。落ち着いて作業を進めましょう。
コードを貼り付けたら、上部の「実行」を押します。すると「承認が必要です」と表示されるので、「権限を確認」をクリックしてください。

次の画面では「このアプリはGoogleで確認されていません」という表示が出ることがあります。画面左下の「詳細」をクリックし、一番下の移動リンクを選んで進みます。

最後に、アクセス許可の画面が表示されたら、内容を確認して「許可」を押します。これで初回設定は完了です。

この確認は、自分で作ったプログラムを動かすための安全確認です。怪しいトラブルではないので、落ち着いて進めましょう。

【コピペで動く】そのまま実務で使えるGASサンプルコード3選

ここでは、学習用の短い例ではなく、実務で使いやすいサンプルに絞って紹介します。まずはコピペで動かし、必要な箇所を直して自分専用のコードを完成させてください。
なお、コード内の // から始まる記述はコメントです。プログラムの動作には影響しないため、削除しても問題ありません。

実例①:別シートの特定のデータを条件に合わせて自動転記する

「売上データ」シートから、「今日発送」の行だけを抜き出し、「発送リスト」に自動転記する使い方です。

【GASコード】

function copyTodayShippingData() {
const ss = SpreadsheetApp.getActiveSpreadsheet();


// ★ここを元データのシート名に変更
const sourceSheet = ss.getSheetByName(‘売上データ’);
// ★ここを転記先のシート名に変更
const targetSheet = ss.getSheetByName(‘発送リスト’);
// ★ここを判定したい列番号に変更(A=0, B=1, C=2…)
const shippingStatusCol = 3;
// ★ここを判定したい文字に変更
const targetStatus = ‘今日発送’;


const values = sourceSheet.getDataRange().getValues();
const header = values[0];
const rows = values.slice(1);


// 条件に合う行を抽出
const filteredRows = rows.filter(row => row[shippingStatusCol] === targetStatus);


// 転記先を一度まっさらにする(前回の残骸を残さないため)
targetSheet.clear();


if (filteredRows.length > 0) {
// ヘッダーとデータを一気に貼り付け
targetSheet.getRange(1, 1, 1, header.length).setValues([header]);
targetSheet.getRange(2, 1, filteredRows.length, header.length).setValues(filteredRows);
ss.toast(${filteredRows.length}件のデータを転記しました, ‘完了’);
} else {
// データがない時は通知だけ飛ばす
ss.toast(‘今日発送の商品は見つからりませんでした’, ‘お知らせ’);
}
}

シート名・列番号の書き換えガイド

以下の箇所をご自身のスプレッドシートの表記に合わせて変更してから使ってください。

  • 「売上データ」を元データのシート名に変更する
  • 「発送リスト」を転記先のシート名に変更する
  • shippingStatusCol = 3 は列番号を表す。A列なら0、B列なら1、C列なら2、、、と指定する
  • 「今日発送」 は判定したい文字に変更する

実例②:期限切れのタスク一覧をSlackに自動通知する

期限を過ぎた未対応案件を見つけたら、Slackへ自動通知する例です。朝の確認漏れを防ぎたい業務で役立ちます。

【GASコード】

function notifyOverdueTasksToSlack() {
  const token = ‘xoxb-xxxxxxxxxxxx’; // ★ここにSlack APIトークンを入力
  const channelId = ‘C0123456789’;   // ★ここに通知先チャンネルIDを入力
  
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘タスク一覧’); // ★ここにシート名を入力
  const rows = sheet.getDataRange().getValues().slice(1);
  const today = new Date().setHours(0, 0, 0, 0);

  // 期限切れ・未完了のタスクを抽出
  const message = rows
    .filter(row => {
      const [name, date, status] = [row[0], row[1], row[2]]; // ★左から[タスク名, 期限, ステータス]の列順を想定
      return name && date instanceof Date && date < today && status !== ‘完了’;
    })
    .map(row => `・${row[0]} (${Utilities.formatDate(row[1], “JST”, “MM/dd”)})`)
    .join(‘\n’);

  if (!message) return; // 送信対象がなければ終了

  // Slackへ送信
  UrlFetchApp.fetch(‘https://slack.com/api/chat.postMessage‘, {
    method: ‘post’,
    contentType: ‘application/json’,
    headers: { Authorization: ‘Bearer ‘ + token },
    payload: JSON.stringify({
      channel: channelId,
      text: `⚠️ 期限切れタスクがあります\n${message}`
    })
  });
}

slackでの事前設定

このコードを使うには、Slack側でAPIトークンとチャンネルIDを取得し、コード内の指定箇所へ貼り付けます。「token」にはAPIトークン(ボットトークン)を入力します。「channelId」には通知先のチャンネルIDを入れます。チャンネル名ではなく、IDを使う点に注意しましょう。


▶APIトークン(ボットトークン)の取得方法はこちら

▶slackのチャンネルIDの見つけ方3種類
方法A:デスクトップ版のチャンネルの詳細画面から
1.IDを知りたいチャンネル名を開き、画面上部の「チャンネル名(チャンネル詳細を取得する)」をクリックします。
2.表示された詳細パネルを一番下までスクロールします。
3.最下部に 「チャンネル ID: CXXXXXXXXXX」 と表示されているので、そこからコピーできます。

方法B:デスクトップ版で右クリックでリンクをコピー
1.左サイドバーのチャンネル一覧から、対象のチャンネルを右クリックします。
2.「コピー」>「リンクをコピー」 を選択します。
3.コピーされたURL(例: https://【your-workspace】.slack.com/archives/CXXXXXXXXXX)の末尾にある C から始まる文字列 がチャンネルIDです。

方法C:ウェブ版のブラウザのURLから
1.ウェブ版Slackで対象のチャンネルを開きます。
2.アドレスバーのURLを確認します。
3.現在のページが https://app.slack.com/client/【ワークスペースID】/CXXXXXXXXXX のようになっている場合、最後の C から始まる部分 がチャンネルIDです

GASコードの書き換えポイント

「タスク一覧」の部分は、自分のシート名に合わせて書き換えてください。シート名が違うと、正しく読み取れません。また、row[0] row[1] row[2] は、それぞれタスク名、期限、対応状況の列位置です。プログラミングのルールに従い、A列を0、B列を1、C列を2、、、として数えます。実際の列順に合わせて番号を調整しましょう。

実例③:毎日朝9時にスクリプトを自動で動かす(トリガー設定)

コードを作っても、毎回その都度手動で実行するのは少し面倒ですよね。そこで、決まった時間に自動で動く設定をしていきましょう。GASエディタ左側の時計マークを押します。右下の「トリガーを追加」を押し、実行する関数名を選択します。

「イベントのソース」で時間主導型を選択し「日付ベースのタイマー」と「午前9時~10時」を選びます。最後に保存すれば設定完了です。

これで、パソコンを開いていない時間でも、指定した関数が自動で動くようになります。まずは朝1回の実行から試すと管理しやすいでしょう。

【注意】GAS運用に潜む「属人化」のリスクとは?

作った人が辞めると誰も直せない「ブラックボックス化」の恐怖

GASは無料で使いやすく、小さな自動化を始める手段として便利です。一方で、運用面には注意したい落とし穴もあります。それが、作った本人しか中身を理解していない、「属人化」の状態に陥りやすい点です。
現場では、次のような失敗が起こりがちです。

特に、コードの説明が残っていない場合は、少しの仕様変更でも対応が難しくなります。担当者の異動や退職で止まる仕組みは危険なのです。

全社展開するには「個人のITスキル」に依存しない仕組みが必要

GASは、個人の作業を早くする用途には向いています。ただし、組織全体で継続運用する場合は、便利さだけで判断しない視点も大切です。全社で業務改善やDXを進めるなら、誰が見ても流れを追いやすく、引き継ぎしやすい仕組みが求められます。退職や異動があっても止まらないように、誰でも直せる、管理しやすいことまで含めて、自動化ツールを選ぶ必要があるのです。

まとめ:GASで小さな自動化を始め、組織全体の効率化へ

まずは本記事のテンプレートを使い、手元の業務を一つ自動化するところから始めましょう。売上確認や通知作業が少し楽になるだけでも、日々の負担は着実に軽くなっていきます。そのうえで、チーム全体への展開を視野に入れるなら、担当者が変わっても運用が続けられる設計や、ドキュメントの整備を意識することが重要です。誰でも扱いやすい仕組みを整えることが、継続的な業務改善の土台につながります。

「RPA導入事例集」によって手作業によるミスや遅延を解決するには?
⇒導入事例集のダウンロードはこちらから