<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>時間指定 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E6%99%82%E9%96%93%E6%8C%87%E5%AE%9A/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 12 Jun 2026 21:57:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>時間指定 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>GASのトリガーでスプレッドシートの集計・通知を自動化する方法｜時間指定・フォーム送信を起点に動かす</title>
		<link>https://mashukabu.com/gas-trigger-automation/</link>
					<comments>https://mashukabu.com/gas-trigger-automation/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 12 Jun 2026 21:57:41 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[GAS]]></category>
		<category><![CDATA[Google Apps Script]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[トリガー]]></category>
		<category><![CDATA[メール自動化]]></category>
		<category><![CDATA[時間指定]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7969</guid>

					<description><![CDATA[GASのトリガーを使えば、スプレッドシートの集計やメール通知を自動実行できます。時間主導型トリガーで毎朝9時に売上集計をGmail送信、フォーム送信時トリガーで回答を即通知する2つの実務シナリオを、コピペで動く完成コード付きで解説します。トリガーが動かないときの対処法も網羅。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「毎朝、出社したらまず昨日の売上を集計してメールで共有する」「フォームに回答が来ても、誰かが気づくまで放置されてしまう」——スプレッドシートで業務を回していると、こうした定型作業に時間を取られますよね。</p>



<p class="wp-block-paragraph">この記事では、Google Apps Script（GAS）の<strong>トリガー</strong>を使って、スプレッドシートの集計やメール通知を「自分が何もしなくても自動で動く」状態にする方法を解説します。トリガーとは、決まった時刻やユーザーの操作を引き金に、指定した関数を自動実行する仕組みのことです。</p>



<p class="wp-block-paragraph">GASの基本的な書き方や実行ボタンの押し方は、シリーズ1本目で丁寧に解説しています。GASに初めて触る方は、先にこちらを読むとつまずきにくいですよ。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜コピペで動くスプレッドシート自動化レシピ5選</a></p>



<p class="wp-block-paragraph">なお、この記事で紹介する「毎朝9時に自動集計」「フォーム回答で自動通知」は、Microsoft の Power Automate でやるような自動化を、Google Workspace の無料環境で実現するイメージです。Microsoft 365 を使えない環境でも、GASのトリガーがあれば同じことができます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">GASのトリガーとは？｜手動実行から自動実行への第一歩</a><ol><li><a href="#toc2" tabindex="0">シンプルトリガーとインストーラブルトリガーの違い</a></li></ol></li><li><a href="#toc3" tabindex="0">GASのトリガーの種類と使い分け｜時間主導型とイベント型</a><ol><li><a href="#toc4" tabindex="0">時間主導型トリガーで指定できる間隔</a></li><li><a href="#toc5" tabindex="0">イベント型トリガーで反応できる操作</a></li></ol></li><li><a href="#toc6" tabindex="0">GASのトリガーを設定する手順｜スクリプトエディタからの操作</a></li><li><a href="#toc7" tabindex="0">【シナリオA】毎朝9時に前日の売上を集計してGmailに自動送信</a><ol><li><a href="#toc8" tabindex="0">前提となるスプレッドシートの形</a></li><li><a href="#toc9" tabindex="0">コピペで動くサンプルコード</a></li><li><a href="#toc10" tabindex="0">コードのポイント解説</a></li><li><a href="#toc11" tabindex="0">時間主導型トリガーを設定する</a></li></ol></li><li><a href="#toc12" tabindex="0">【シナリオB】フォーム回答があったら担当者にメール通知</a><ol><li><a href="#toc13" tabindex="0">フォーム送信時トリガーが使えるスプレッドシート</a></li><li><a href="#toc14" tabindex="0">コピペで動くサンプルコード</a></li><li><a href="#toc15" tabindex="0">コードのポイント解説</a></li><li><a href="#toc16" tabindex="0">フォーム送信時トリガーを設定する</a></li></ol></li><li><a href="#toc17" tabindex="0">GASのトリガーが動かない・二重実行するときの対処法</a><ol><li><a href="#toc18" tabindex="0">トリガーが動かないとき</a></li><li><a href="#toc19" tabindex="0">メールが2通来る・処理が二重に走るとき</a></li><li><a href="#toc20" tabindex="0">実行回数・時間の上限に注意</a></li><li><a href="#toc21" tabindex="0">トリガーは作成した本人の権限で動く</a></li></ol></li><li><a href="#toc22" tabindex="0">まとめ｜GASのトリガーで定型業務を自動化しよう</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">GASのトリガーとは？｜手動実行から自動実行への第一歩</span></h2>



<p class="wp-block-paragraph">GASのトリガーとは、<strong>「ある条件（時刻や操作）をきっかけに、指定した関数を自動で実行する仕組み」</strong>です。</p>



<p class="wp-block-paragraph">通常、スプレッドシートで書いたGASのコードは、スクリプトエディタの「実行」ボタンを押さないと動きません。これが手動実行です。便利な処理を書いても、自分でボタンを押し続けるなら手作業とあまり変わりませんよね。</p>



<p class="wp-block-paragraph">ここでトリガーの出番です。「毎朝9時になったら」「フォームに回答が届いたら」といった条件を設定しておけば、その瞬間に関数が自動で走ります。パソコンを開いていなくても、Googleのサーバー上で勝手に実行してくれるのが大きな特徴です。</p>



<p class="wp-block-paragraph">トリガーで自動実行される関数のことを、この記事では<strong>ハンドラ関数</strong>と呼びます。トリガーが発火したときに呼び出される関数、という意味です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>手動実行</th><th>トリガーによる自動実行</th></tr></thead><tbody><tr><td>実行のきっかけ</td><td>自分で実行ボタンを押す</td><td>時刻・操作などの条件</td></tr><tr><td>パソコンの状態</td><td>開いている必要あり</td><td>閉じていてもGoogleが実行</td></tr><tr><td>向いている用途</td><td>テスト・単発の処理</td><td>定期処理・イベント対応</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">トリガーを覚えると、GASの活用範囲が一気に広がります。「同じ作業を毎日繰り返している」と感じている方ほど、効果を実感しやすいですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">シンプルトリガーとインストーラブルトリガーの違い</span></h3>



<p class="wp-block-paragraph">GASのトリガーには、実は2つの系統があります。最初にここを押さえておくと、後で「なぜか動かない」を避けられます。</p>



<ul class="wp-block-list"><li><strong>シンプルトリガー</strong>: 関数名を <code>onOpen</code> や <code>onEdit</code> のような決まった名前にするだけで、設定なしに自動発火するトリガーです。手軽ですが、メール送信や外部サービスへのアクセスができないという強い制約があります。</li><li><strong>インストーラブルトリガー</strong>: スクリプトエディタの専用画面から設定するトリガーです。権限の承認を経るため、メール送信や定期実行など、制約のある操作も実行できます。</li></ul>



<p class="wp-block-paragraph">この記事で扱う「自動メール送信」「毎朝の定期実行」は、いずれも<strong>インストーラブルトリガーが必須</strong>です。シンプルトリガーの <code>onEdit</code> の中にメール送信を書いても動かないので、ここは混同しないようにしましょう。以降、この記事で単に「トリガー」と書く場合は、インストーラブルトリガーを指します。</p>



<h2 class="wp-block-heading"><span id="toc3">GASのトリガーの種類と使い分け｜時間主導型とイベント型</span></h2>



<p class="wp-block-paragraph">インストーラブルトリガーは、大きく<strong>時間主導型</strong>と<strong>イベント型</strong>の2タイプに分かれます。どちらを選ぶかは、「いつ動かしたいか」で決まります。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>選ぶトリガー</th><th>具体例</th></tr></thead><tbody><tr><td>決まった時刻・間隔で動かしたい</td><td>時間主導型</td><td>毎朝9時に集計、1時間おきに同期</td></tr><tr><td>何かが起きたら動かしたい</td><td>イベント型</td><td>フォーム回答時、セル編集時</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">判断はシンプルです。「スケジュールで動かす」なら時間主導型、「きっかけに反応して動かす」ならイベント型と覚えておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc4">時間主導型トリガーで指定できる間隔</span></h3>



<p class="wp-block-paragraph">時間主導型トリガーは、設定画面でかなり細かく実行タイミングを選べます。主な選択肢は次の通りです。</p>



<ul class="wp-block-list"><li>特定の日時（一度だけ実行）</li><li>分ベース（1分・5分・10分・15分・30分おき）</li><li>時間ベース（1〜12時間おき）</li><li>日ベース（毎日。実行する時間帯を選択）</li><li>週ベース（曜日 + 時間帯）</li><li>月ベース（日にち + 時間帯）</li></ul>



<p class="wp-block-paragraph">ここで1つ大事な仕様があります。<strong>時間帯はあくまで「その1時間の枠のどこか」で実行される</strong>という点です。たとえば「午前9時〜10時」を選んでも、きっちり9時00分に動くとは限りません。9時5分や9時40分など、枠内のどこかで実行されます。「1分の誤差も許されない」という用途には向かないので、覚えておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc5">イベント型トリガーで反応できる操作</span></h3>



<p class="wp-block-paragraph">スプレッドシートやフォームに紐づくイベント型トリガーでは、次のような操作をきっかけにできます。</p>



<ul class="wp-block-list"><li>起動時（スプレッドシートを開いたとき）</li><li>編集時（セルの値が変わったとき）</li><li>変更時（行・列の追加など構造が変わったとき）</li><li>フォーム送信時（リンクされたフォームに回答が届いたとき）</li></ul>



<p class="wp-block-paragraph">この記事では、最も実務ニーズが高い「時間主導型（毎朝の集計）」と「フォーム送信時（回答通知）」の2つを、完成コード付きで実装していきます。</p>



<h2 class="wp-block-heading"><span id="toc6">GASのトリガーを設定する手順｜スクリプトエディタからの操作</span></h2>



<p class="wp-block-paragraph">実際のコードに入る前に、トリガーをどこで設定するのかを押さえておきましょう。トリガーの設定画面は、コードを書く画面とは別の場所にあります。</p>



<p class="wp-block-paragraph">スプレッドシートのメニューから <code>拡張機能</code> → <code>Apps Script</code> でスクリプトエディタを開いたら、次の手順で進みます。</p>



<ol class="wp-block-list"><li>エディタの左側メニューにある<strong>時計のアイコン（トリガー）</strong>をクリック</li><li>画面右下の「<strong>トリガーを追加</strong>」ボタンをクリック</li><li>設定ダイアログで、実行する関数・イベントの種類などを選ぶ</li><li>「保存」をクリック</li><li>初回のみ権限の承認画面が表示されるので、自分のGoogleアカウントで承認する</li></ol>



<p class="wp-block-paragraph">設定ダイアログでは、主に次の項目を選びます。</p>



<figure class="wp-block-table"><table><thead><tr><th>設定項目</th><th>選ぶ内容</th></tr></thead><tbody><tr><td>実行する関数を選択</td><td>自動実行したいハンドラ関数の名前</td></tr><tr><td>実行するデプロイを選択</td><td><code>Head</code>（基本はこのまま）</td></tr><tr><td>イベントのソースを選択</td><td><code>時間主導型</code> または <code>スプレッドシートから</code></td></tr><tr><td>イベントの種類を選択</td><td>ソースに応じて表示される選択肢</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">承認画面で「このアプリはGoogleで確認されていません」という警告が出ますが、自作スクリプトでは正常な挙動です。「詳細」→「（プロジェクト名）に移動（安全ではないページ）」をクリックして、利用する権限を確認のうえ許可してください。権限承認の詳しい流れは入門記事でも解説しています。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜コピペで動くスプレッドシート自動化レシピ5選</a></p>



<p class="wp-block-paragraph">それでは、具体的なシナリオを2つ作っていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc7">【シナリオA】毎朝9時に前日の売上を集計してGmailに自動送信</span></h2>



<p class="wp-block-paragraph">最初のシナリオは、<strong>毎朝9時に前日分の売上を集計し、その結果をGmailで送る</strong>という時間主導型トリガーの実装です。朝イチの「昨日いくら売れた？」を、出社前に自動で用意しておくイメージです。</p>



<h3 class="wp-block-heading"><span id="toc8">前提となるスプレッドシートの形</span></h3>



<p class="wp-block-paragraph">ここでは、次のような売上記録シート（シート名「売上」）を想定します。A列に日付、B列に商品名、C列に金額が入っている形です。</p>



<figure class="wp-block-table"><table><thead><tr><th>日付</th><th>商品名</th><th>金額</th></tr></thead><tbody><tr><td>2026/05/26</td><td>商品A</td><td>12000</td></tr><tr><td>2026/05/26</td><td>商品B</td><td>8000</td></tr><tr><td>2026/05/27</td><td>商品A</td><td>5000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">1行目はヘッダー、2行目以降が明細です。この中から「前日の日付」に一致する行だけを集めて、合計を出します。</p>



<h3 class="wp-block-heading"><span id="toc9">コピペで動くサンプルコード</span></h3>



<p class="wp-block-paragraph">スクリプトエディタに以下を貼り付けて、<code>'your-address@example.com'</code> を自分の通知先メールアドレスに、<code>'売上'</code> を実際のシート名に書き換えてください。</p>



<pre class="wp-block-code"><code>// --- シナリオA: 前日分の売上を集計してGmailで送信 ---
function dailySalesReport() {
  try {
    // --- 設定（自分の環境に合わせて書き換える） ---
    const toAddress = 'your-address@example.com';
    const sheetName = '売上';

    // --- 前日の日付を求める ---
    const yesterday = new Date();
    yesterday.setDate(yesterday.getDate() - 1);
    const targetDateStr = Utilities.formatDate(
      yesterday,
      'Asia/Tokyo',
      'yyyy/MM/dd'
    );

    // --- シートのデータを2次元配列で取得 ---
    const sheet = SpreadsheetApp
      .getActiveSpreadsheet()
      .getSheetByName(sheetName);
    const values = sheet.getDataRange().getValues();

    // --- 前日分だけ合計する（1行目ヘッダーはスキップ） ---
    let total = 0;
    let count = 0;
    for (let i = 1; i &lt; values.length; i++) {
      const cellDate = values[i][0]; // A列: 日付
      const amount = values[i][2];   // C列: 金額
      if (!(cellDate instanceof Date)) continue;
      const rowDateStr = Utilities.formatDate(
        cellDate,
        'Asia/Tokyo',
        'yyyy/MM/dd'
      );
      if (rowDateStr === targetDateStr) {
        total += Number(amount);
        count++;
      }
    }

    // --- メール本文を組み立てて送信 ---
    const subject = '[日報] ' + targetDateStr + ' の売上集計';
    const body =
      targetDateStr + ' の売上をお知らせします。nn' +
      '件数: ' + count + ' 件n' +
      '合計金額: ' + total.toLocaleString() + ' 円';
    GmailApp.sendEmail(toAddress, subject, body);
  } catch (err) {
    // --- エラー時はログに残す ---
    console.log('日報送信エラー: ' + err.message);
  }
}</code></pre>



<h3 class="wp-block-heading"><span id="toc10">コードのポイント解説</span></h3>



<p class="wp-block-paragraph">ポイントを順番に見ていきましょう。</p>



<ul class="wp-block-list"><li><strong><code>new Date()</code> と <code>setDate(...)</code></strong>: 今日の日付から1日引いて前日を求めています。<code>setDate(getDate() - 1)</code> は月初でも正しく前月末に戻るので、月またぎを気にする必要はありません</li><li><strong><code>Utilities.formatDate(...)</code></strong>: 日付を <code>yyyy/MM/dd</code> の文字列にそろえる関数です。タイムゾーンに <code>'Asia/Tokyo'</code> を指定して、日本時間でずれないようにしています</li><li><strong><code>getDataRange().getValues()</code></strong>: シートの入力済み範囲をまとめて2次元配列で取り出します。1行ずつ読むより高速で、GASの定番パターンです</li><li><strong><code>if (!(cellDate instanceof Date)) continue;</code></strong>: 日付セルが空欄や文字列だった場合に備えて、日付型でない行は飛ばしています</li><li><strong><code>try/catch</code></strong>: トリガー実行中にエラーが出ても、処理を安全に終わらせるためのガードです</li></ul>



<p class="wp-block-paragraph">このコードを保存したら、まず手動で1回実行してみましょう。前日分の売上が入っていれば、自分宛にメールが届くはずです。動作を確認できたら、いよいよトリガーを設定します。</p>



<h3 class="wp-block-heading"><span id="toc11">時間主導型トリガーを設定する</span></h3>



<p class="wp-block-paragraph">先ほどの手順でトリガー画面を開き、「トリガーを追加」から次のように設定します。</p>



<ol class="wp-block-list"><li>実行する関数: <code>dailySalesReport</code></li><li>イベントのソース: <code>時間主導型</code></li><li>時間ベースのトリガーのタイプ: <code>日付ベースのタイマー</code></li><li>時刻: <code>午前9時〜10時</code></li><li>「保存」をクリック</li></ol>



<p class="wp-block-paragraph">これで、毎朝9時台に前日の売上集計メールが自動で届くようになります。前述の通り、実行は「9時〜10時の枠内のどこか」で行われる点だけ覚えておきましょう。</p>



<p class="wp-block-paragraph">なお、メールの本文をもっと作り込みたい場合は、HTML形式での送信や商品別の内訳追加なども可能です。差し込みメールのテクニックは、こちらの記事が参考になりますよ。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-gmail-batch-send-gas/">スプレッドシートからGmailを一括送信する方法｜GASで差し込みメールを自動化</a></p>



<h2 class="wp-block-heading"><span id="toc12">【シナリオB】フォーム回答があったら担当者にメール通知</span></h2>



<p class="wp-block-paragraph">次は、<strong>Googleフォームに回答が届いた瞬間に、担当者へメールで通知する</strong>というフォーム送信時トリガーの実装です。問い合わせや申込フォームの「気づかず放置」をなくせます。</p>



<h3 class="wp-block-heading"><span id="toc13">フォーム送信時トリガーが使えるスプレッドシート</span></h3>



<p class="wp-block-paragraph">フォーム送信時トリガーを使うには、<strong>フォームの回答が流れ込むスプレッドシート</strong>が起点になります。フォーム編集画面の「回答」タブから「スプレッドシートにリンク」しておくと、回答のたびにスプレッドシートへ行が追加されます。</p>



<p class="wp-block-paragraph">このリンク先スプレッドシートで <code>拡張機能</code> → <code>Apps Script</code> を開いて、コードを書いていきます。フォーム連携の基本をもっと詳しく知りたい方は、こちらの記事もあわせてどうぞ。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/google-form-gas-auto-aggregate/">Googleフォーム×GASで回答を自動通知・集計する方法｜コピペで動く3レシピ</a></p>



<h3 class="wp-block-heading"><span id="toc14">コピペで動くサンプルコード</span></h3>



<p class="wp-block-paragraph">回答先スプレッドシートのスクリプトエディタに、以下を貼り付けます。<code>'tantou@example.com'</code> を担当者のメールアドレスに書き換えてください。</p>



<pre class="wp-block-code"><code>// --- シナリオB: フォーム回答を担当者にメール通知 ---
function notifyOnFormSubmit(e) {
  try {
    // --- 通知先（担当者のアドレスに書き換える） ---
    const toAddress = 'tantou@example.com';

    // --- 質問名をキーにした回答オブジェクト ---
    const namedValues = e.namedValues;

    // --- 「質問: 回答」の形に整形して連結 ---
    const body = Object.entries(namedValues)
      .map(function(entry) {
        return entry[0] + ': ' + entry[1].join(', ');
      })
      .join('n');

    // --- メールを送信 ---
    const subject = '[フォーム] 新しい回答が届きました';
    GmailApp.sendEmail(toAddress, subject, body);
  } catch (err) {
    console.log('フォーム通知エラー: ' + err.message);
  }
}</code></pre>



<h3 class="wp-block-heading"><span id="toc15">コードのポイント解説</span></h3>



<p class="wp-block-paragraph">フォーム送信時トリガーでは、ハンドラ関数が<strong>イベントオブジェクト</strong>を受け取れます。引数の <code>e</code> がそれで、トリガー発火時に「どんな回答が来たか」という情報が自動で渡されます。</p>



<ul class="wp-block-list"><li><strong><code>e.namedValues</code></strong>: イベントオブジェクト <code>e</code> が持つプロパティで、<strong>質問テキストをキー、回答を配列値とするオブジェクト</strong>です。列の順番に依存しないため、後から質問を追加・並び替えしても壊れにくくなります</li><li><strong><code>entry[1].join(', ')</code></strong>: チェックボックスなど複数回答の場合に備えて、回答をカンマ区切りで結合しています</li><li><strong><code>try/catch</code></strong>: エラー時もトリガーを安全に終わらせるためのガードです</li></ul>



<h3 class="wp-block-heading"><span id="toc16">フォーム送信時トリガーを設定する</span></h3>



<p class="wp-block-paragraph">コードを保存したら、トリガー画面で次のように設定します。</p>



<ol class="wp-block-list"><li>実行する関数: <code>notifyOnFormSubmit</code></li><li>イベントのソース: <code>スプレッドシートから</code></li><li>イベントの種類: <code>フォーム送信時</code></li><li>「保存」をクリック</li></ol>



<p class="wp-block-paragraph">設定できたら、テスト用にフォームを1件送信してみましょう。担当者のメールアドレスに通知が届けば成功です。これで「回答が来たのに誰も気づかない」状態から抜け出せますよ。</p>



<h2 class="wp-block-heading"><span id="toc17">GASのトリガーが動かない・二重実行するときの対処法</span></h2>



<p class="wp-block-paragraph">トリガーは便利な反面、「設定したのに動かない」「メールが2通来る」といったトラブルも起きがちです。よくあるパターンと対処法をまとめておきます。</p>



<h3 class="wp-block-heading"><span id="toc18">トリガーが動かないとき</span></h3>



<p class="wp-block-paragraph">まず確認したいのは、<strong>実行ログ</strong>です。スクリプトエディタ左メニューの「実行数」をクリックすると、トリガーが実際に走ったかどうかと、その結果（完了・失敗）を確認できます。ステータスが「失敗」になっていれば、クリックしてエラー内容を見てみましょう。</p>



<p class="wp-block-paragraph">動かないときに多い原因は次の通りです。</p>



<ul class="wp-block-list"><li><strong>シンプルトリガーでメール送信を書いている</strong>: <code>onEdit</code> などのシンプルトリガーではメール送信ができません。インストーラブルトリガーに設定し直す必要があります</li><li><strong>関数名やシート名のタイプミス</strong>: コード内の <code>getSheetByName('売上')</code> のシート名が、実際のシート名と1文字でも違うと動きません</li><li><strong>権限承認が完了していない</strong>: 初回の承認画面を途中で閉じてしまうと、トリガーは設定されても実行時に止まります</li></ul>



<p class="wp-block-paragraph">なお、インストーラブルトリガーで起動した関数がエラーになると、Googleからトリガー所有者宛に<strong>エラー通知メール</strong>が自動で届きます。<code>try/catch</code> でエラーを完全に握りつぶすと、この通知も来なくなり「気づかないうちに止まっている」状態になりやすいので、開発中は <code>console.log</code> でログを残しておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc19">メールが2通来る・処理が二重に走るとき</span></h3>



<p class="wp-block-paragraph">同じ処理が2回実行される場合、<strong>トリガーを重複して登録している</strong>のが原因のほとんどです。</p>



<p class="wp-block-paragraph">トリガー画面で「トリガーを追加」を何度も押すと、同じ関数に複数のトリガーがぶら下がります。すると1回のイベントで関数が2回・3回と実行され、メールも同じ数だけ届いてしまいます。トリガー一覧を開いて、不要なトリガーは行末のメニューから削除しましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">実行回数・時間の上限に注意</span></h3>



<p class="wp-block-paragraph">GASには<strong>割り当て（quota）</strong>という1日あたりの上限があります。個人のGoogleアカウント（@gmail.com）の主な上限は次の通りです。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>個人アカウントの上限</th></tr></thead><tbody><tr><td>メール送信数（GmailApp）</td><td>1日 100通</td></tr><tr><td>スクリプト1回の実行時間</td><td>最大 6分</td></tr><tr><td>トリガーの合計実行時間</td><td>1日 90分</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「毎朝1通メールを送る」程度なら、この上限にはまったく届きません。ただし「1分おきのトリガーで毎回メールを送る」といった設計だと、あっという間に上限に達してしまいます。トリガーの頻度は、本当に必要な間隔だけにしておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc21">トリガーは作成した本人の権限で動く</span></h3>



<p class="wp-block-paragraph">もう1つ知っておきたいのが、<strong>トリガーは設定した本人のアカウント権限で実行される</strong>という点です。スプレッドシートをチームで共有していても、トリガーは作成者として動き、メールは作成者のGmailから送られます。割り当て（1日100通など）も作成者のものが消費されます。チームで運用する場合は、誰のアカウントでトリガーを設定したかを把握しておくと、トラブルを避けられますよ。</p>



<h2 class="wp-block-heading"><span id="toc22">まとめ｜GASのトリガーで定型業務を自動化しよう</span></h2>



<p class="wp-block-paragraph">GASのトリガーを使えば、これまで手作業で繰り返していた集計や通知を、自分が何もしなくても自動で動かせます。最後に要点を整理しておきます。</p>



<ul class="wp-block-list"><li><strong>トリガーには時間主導型とイベント型がある</strong>: スケジュールで動かすなら時間主導型、操作をきっかけに動かすならイベント型</li><li><strong>メール送信や定期実行はインストーラブルトリガーが必須</strong>: シンプルトリガー（onEditなど）ではメール送信ができない</li><li><strong>時間主導型は「枠内のどこか」で実行される</strong>: 9時〜10時を指定しても9時00分ぴったりではない</li><li><strong>動かないときは実行ログ、二重実行は重複トリガーを疑う</strong>: まずは「実行数」画面を確認する</li><li><strong>割り当て（1日100通など）に注意</strong>: 高頻度トリガーは上限に届きやすい</li></ul>



<p class="wp-block-paragraph">「毎朝9時の自動集計」と「フォーム回答の自動通知」が動かせるようになれば、GASの自動化はぐっと実用的になります。今日紹介したコードはコピペで動くので、ぜひ自分の業務に合わせて書き換えて試してみてください。</p>



<p class="wp-block-paragraph">GASの基礎を固め直したい方や、フォーム・メール連携をさらに掘り下げたい方は、シリーズの関連記事もあわせてどうぞ。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜コピペで動くスプレッドシート自動化レシピ5選</a></li><li><a href="https://mashukabu.com/google-form-gas-auto-aggregate/">Googleフォーム×GASで回答を自動通知・集計する方法｜コピペで動く3レシピ</a></li><li><a href="https://mashukabu.com/spreadsheet-gmail-batch-send-gas/">スプレッドシートからGmailを一括送信する方法｜GASで差し込みメールを自動化</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/gas-trigger-automation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
