<?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/%e3%83%aa%e3%83%9e%e3%82%a4%e3%83%b3%e3%83%89/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Tue, 09 Jun 2026 01:45:35 +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で期限リマインド・未対応タスクを自動アラート｜Google Chatとメールに通知</title>
		<link>https://mashukabu.com/gas-deadline-reminder-alert/</link>
					<comments>https://mashukabu.com/gas-deadline-reminder-alert/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 01:45:35 +0000</pubDate>
				<category><![CDATA[仕事効率化]]></category>
		<category><![CDATA[GAS]]></category>
		<category><![CDATA[Google Apps Script]]></category>
		<category><![CDATA[Google Chat]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[リマインド]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7876</guid>

					<description><![CDATA[スプレッドシートのタスク一覧から期限が近い行・未対応のまま放置された行をGASが自動検出し、Google ChatやGmailに毎朝アラート通知する仕組みを解説します。時間主導トリガーで定期実行し、通知済みフラグで重複通知を防ぐコピペコード付き。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">タスクや案件をスプレッドシートで管理していると、「気づいたら期限を過ぎていた」「未対応のまま放置されていた」という事態が起きますよね。</p>



<p class="wp-block-paragraph">毎日シートを開いてチェックすればよいのですが、件数が増えると見落としが必ず発生します。放置すれば対応漏れがクレームや納期遅延につながり、後始末のほうがずっと大変です。</p>



<p class="wp-block-paragraph">この記事では、GAS（Google Apps Script）を使ってスプレッドシートの「期限が近い行」「未対応のまま放置された行」を自動検出し、Google Chat やメールに毎朝アラートを飛ばす仕組みを作ります。コピペで動くコード付きなので、シートに合わせて少し書き換えるだけで使えます。</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">この仕組みでできること</a></li><li><a href="#toc2" tabindex="0">前提：スプレッドシートの準備</a></li><li><a href="#toc3" tabindex="0">アラートを検出するコードを書く</a></li><li><a href="#toc4" tabindex="0">Google Chatに通知する設定</a><ol><li><a href="#toc5" tabindex="0">Webhook URLを取得する</a></li><li><a href="#toc6" tabindex="0">通知用の関数を追加する</a></li><li><a href="#toc7" tabindex="0">メールで受け取りたい場合</a></li></ol></li><li><a href="#toc8" tabindex="0">毎朝自動で実行する（時間主導トリガー）</a></li><li><a href="#toc9" tabindex="0">重複通知を防ぐ仕組みと注意点</a></li><li><a href="#toc10" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">この仕組みでできること</span></h2>



<p class="wp-block-paragraph">GAS とは、Google スプレッドシートやドキュメントを操作できる、Google 公式のプログラム実行環境のことです。Excel でいうマクロ（VBA）の Google 版だと考えると分かりやすいです。</p>



<p class="wp-block-paragraph">今回作る仕組みのゴールはシンプルです。</p>



<ul class="wp-block-list"><li>スプレッドシートのタスク一覧を上から順にチェックする</li><li>「期限が3日以内に迫っている」または「期限を過ぎているのに未対応」の行を見つける</li><li>該当した行の内容を Google Chat やメールにまとめて通知する</li><li>これを毎朝決まった時刻に自動実行する</li><li>一度通知した行は再通知しないよう「通知済み」フラグを立てる</li></ul>



<p class="wp-block-paragraph">つまり、自分でシートを見に行かなくても、対応が必要なタスクだけが毎朝手元に届く状態を作るわけです。タスク管理だけでなく、案件の進捗管理や、<a href="https://mashukabu.com/gas-spreadsheet-invoice-pdf/">スプレッドシートから請求書PDFを自動作成する仕組み</a>と組み合わせれば、請求の入金確認など「期限つきで状態を管理する一覧」ならほぼ同じ仕組みで応用できます。</p>



<p class="wp-block-paragraph">GAS自体がはじめての方は、先に基本操作をおさえておくとスムーズです。スクリプトエディタの開き方や実行・承認の流れは、<a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GASの始め方とすぐ使えるレシピ集</a>で詳しく解説しています。</p>



<h2 class="wp-block-heading"><span id="toc2">前提：スプレッドシートの準備</span></h2>



<p class="wp-block-paragraph">まずは通知対象になるシートを用意します。今回は次のような列構成を前提に進めます。</p>



<figure class="wp-block-table"><table><thead><tr><th>列</th><th>内容</th><th>例</th></tr></thead><tbody><tr><td>A</td><td>タスク名</td><td>請求書送付（A社）</td></tr><tr><td>B</td><td>担当者</td><td>田中</td></tr><tr><td>C</td><td>期限</td><td>2026-06-10</td></tr><tr><td>D</td><td>ステータス</td><td>未対応</td></tr><tr><td>E</td><td>通知済みフラグ</td><td>（空欄でOK）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは2つあります。</p>



<p class="wp-block-paragraph">1行目は見出し行にして、2行目からデータを入れてください。コードは2行目以降を処理対象とします。</p>



<p class="wp-block-paragraph">C列の「期限」は、必ず日付として入力してください。文字列の「6/10」ではなく、日付形式で入れるのがポイントです。セルを選択して右下に日付らしい表示が出ていればOKです。</p>



<p class="wp-block-paragraph">E列の「通知済みフラグ」は、最初は空欄のままで構いません。GASが通知を送ったときに、自動で「通知済」と書き込みます。これによって、同じタスクを毎朝何度も通知してしまうのを防ぎます。</p>



<h2 class="wp-block-heading"><span id="toc3">アラートを検出するコードを書く</span></h2>



<p class="wp-block-paragraph">それではメインのコードを作ります。ちょっと長く見えますが、やっていることは「上から順に行を見て、条件に合う行を集めて通知する」だけのシンプルな処理です。</p>



<p class="wp-block-paragraph">スプレッドシートのメニューから「拡張機能」→「Apps Script」を開き、次のコードを貼り付けてください。</p>



<pre class="wp-block-code"><code>// ===== 設定（ここだけ環境に合わせて変更）=====
const SHEET_NAME = 'タスク一覧';   // 対象シート名
const DEADLINE_DAYS = 3;          // 期限まで何日以内を「期限間近」とするか
const STATUS_DONE = '完了';        // 完了とみなすステータス名

function checkDeadlineAndAlert() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
  if (!sheet) {
    Logger.log('シートが見つかりません: ' + SHEET_NAME);
    return;
  }

  const lastRow = sheet.getLastRow();
  if (lastRow &lt; 2) return; // データなし

  // 2行目以降のA〜E列をまとめて取得
  const values = sheet.getRange(2, 1, lastRow - 1, 5).getValues();

  // 今日の0時を基準にする（時刻のズレで判定がブレないように）
  const today = new Date();
  today.setHours(0, 0, 0, 0);

  const alerts = [];      // 通知メッセージの材料を貯める
  const flagUpdates = []; // 通知済みフラグを立てる行番号

  for (let i = 0; i &lt; values.length; i++) {
    const [taskName, owner, deadline, status, notified] = values[i];
    const rowNumber = i + 2; // 実際のシート行番号

    // 完了済み・通知済み・期限が空の行はスキップ
    if (status === STATUS_DONE) continue;
    if (notified === '通知済') continue;
    if (!(deadline instanceof Date)) continue;

    // 期限を0時に揃えて、今日との差を「日数」で求める
    const dueDate = new Date(deadline);
    dueDate.setHours(0, 0, 0, 0);
    const diffDays = Math.round((dueDate - today) / (1000 * 60 * 60 * 24));

    let label = '';
    if (diffDays &lt; 0) {
      label = '期限切れ（' + (-diffDays) + '日経過）';
    } else if (diffDays &lt;= DEADLINE_DAYS) {
      label = '期限間近（あと' + diffDays + '日）';
    } else {
      continue; // まだ余裕があるのでスキップ
    }

    alerts.push('・' + taskName + '【' + owner + '】 ' + label + ' / 状態: ' + status);
    flagUpdates.push(rowNumber);
  }

  if (alerts.length === 0) {
    Logger.log('通知対象なし');
    return;
  }

  // 通知本文を組み立てる
  const message = '対応が必要なタスクが ' + alerts.length + ' 件あります。nn'
    + alerts.join('n');

  // 通知を送る（次の見出しで関数を用意します）
  sendChatNotification(message);
  // sendMailNotification(message); // メールで送りたい場合はこちらを使う

  // 通知できた行に「通知済」を書き込む
  flagUpdates.forEach(function(rowNumber) {
    sheet.getRange(rowNumber, 5).setValue('通知済');
  });

  Logger.log(alerts.length + ' 件を通知しました');
}</code></pre>



<p class="wp-block-paragraph">コードの上部にある「設定」エリアの3つの変数を、自分のシートに合わせて変えてください。</p>



<ul class="wp-block-list"><li><code>SHEET_NAME</code>：通知したいシートの名前（タブの名前）に変更します</li><li><code>DEADLINE_DAYS</code>：期限の何日前から通知するかです。「3」なら3日前から知らせます</li><li><code>STATUS_DONE</code>：完了を表すステータス名です。シートで使っている言葉に合わせてください</li></ul>



<p class="wp-block-paragraph">判定のコツは、今日も期限も「0時」に揃えてから引き算している点です。こうしないと、時刻のわずかな差で「あと0日」と「あと1日」がブレてしまいます。<code>setHours(0, 0, 0, 0)</code> で時刻部分をリセットしているのが、地味ですが大事なポイントです。</p>



<h2 class="wp-block-heading"><span id="toc4">Google Chatに通知する設定</span></h2>



<p class="wp-block-paragraph">検出したアラートを Google Chat に飛ばすには、Webhook（ウェブフック）という仕組みを使います。Webhook とは、特定の URL に文章を送ると、その内容が自動でチャットに投稿される仕組みのことです。</p>



<h3 class="wp-block-heading"><span id="toc5">Webhook URLを取得する</span></h3>



<p class="wp-block-paragraph">通知を受け取りたい Google Chat のスペースを開きます。スペース名をクリックして「アプリと統合」を選び、「Webhook を管理」から新しい Webhook を追加します。名前（例：タスクアラート）を付けて保存すると、URL が発行されます。</p>



<p class="wp-block-paragraph">この URL は外部に漏れると誰でも投稿できてしまうので、扱いには注意してください。</p>



<h3 class="wp-block-heading"><span id="toc6">通知用の関数を追加する</span></h3>



<p class="wp-block-paragraph">取得した URL を使って、先ほどのコードに次の関数を追加します。</p>



<pre class="wp-block-code"><code>function sendChatNotification(message) {
  // 発行したWebhook URLに置き換える
  const webhookUrl = 'https://chat.googleapis.com/v1/spaces/XXXX/messages?key=...';

  const payload = { text: message };

  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };

  const response = UrlFetchApp.fetch(webhookUrl, options);
  Logger.log('Chat送信結果: ' + response.getResponseCode());
}</code></pre>



<p class="wp-block-paragraph"><code>webhookUrl</code> の部分を、先ほど発行した URL に書き換えてください。これで <code>checkDeadlineAndAlert</code> が実行されると、対象タスクがチャットにまとめて投稿されます。</p>



<h3 class="wp-block-heading"><span id="toc7">メールで受け取りたい場合</span></h3>



<p class="wp-block-paragraph">Google Chat を使っていない場合は、Gmail への通知に切り替えられます。次の関数を追加し、メインコードのコメントアウトを切り替えてください。</p>



<pre class="wp-block-code"><code>function sendMailNotification(message) {
  const to = Session.getActiveUser().getEmail(); // 自分宛て
  const subject = '【タスクアラート】対応が必要なタスクがあります';

  GmailApp.sendEmail(to, subject, message);
  Logger.log('メールを送信しました: ' + to);
}</code></pre>



<p class="wp-block-paragraph">メインコードの <code>sendChatNotification(message);</code> をコメントアウトし、<code>sendMailNotification(message);</code> のコメントを外せば、メール通知に切り替わります。両方を有効にして、チャットとメールの両方に送ることもできます。</p>



<h2 class="wp-block-heading"><span id="toc8">毎朝自動で実行する（時間主導トリガー）</span></h2>



<p class="wp-block-paragraph">ここまでで、手動で実行すれば通知が飛ぶ状態になりました。最後に「毎朝決まった時刻に勝手に動く」ように設定します。これに使うのが時間主導トリガーです。</p>



<p class="wp-block-paragraph">トリガーとは、「決まった条件になったら自動でこの関数を動かす」という予約設定のことです。Apps Script エディタの左メニューにある時計のアイコン（トリガー）をクリックします。</p>



<p class="wp-block-paragraph">右下の「トリガーを追加」を押し、次のように設定してください。</p>



<ol class="wp-block-list"><li>実行する関数：<code>checkDeadlineAndAlert</code> を選ぶ</li><li>イベントのソース：「時間主導型」を選ぶ</li><li>時間ベースのトリガーのタイプ：「日付ベースのタイマー」を選ぶ</li><li>時刻：「午前8時〜9時」など、出社前後の時間帯を選ぶ</li></ol>



<p class="wp-block-paragraph">保存すれば完了です。これで毎朝、その時間帯に自動でシートがチェックされ、対応が必要なタスクだけが通知されるようになります。</p>



<p class="wp-block-paragraph">トリガーの種類や、フォーム送信を起点に動かす方法など、もっと詳しい使い分けは<a href="https://mashukabu.com/gas-trigger-automation/">GASのトリガーで集計・通知を自動化する方法</a>で解説しています。あわせて読むと、自動化の幅が一気に広がります。</p>



<h2 class="wp-block-heading"><span id="toc9">重複通知を防ぐ仕組みと注意点</span></h2>



<p class="wp-block-paragraph">今回のコードでは、通知した行の E 列に「通知済」と書き込むことで、翌日以降に同じタスクを何度も通知しないようにしています。</p>



<p class="wp-block-paragraph">ただし、運用していると「一度通知したけれど、まだ対応していないタスクをもう一度知らせてほしい」という場面も出てきます。そのときは、考え方を切り替えて使い分けてください。</p>



<ul class="wp-block-list"><li>1回だけ知らせれば十分なら：今回のコードのまま使う（通知済フラグで重複防止）</li><li>対応するまで毎日しつこく知らせたいなら：<code>if (notified === '通知済') continue;</code> の行を削除する</li></ul>



<p class="wp-block-paragraph">毎日通知する運用にする場合は、フラグ書き込みの処理も不要になるので、合わせて外しておくと動作がすっきりします。</p>



<p class="wp-block-paragraph">そのほか、運用前に確認しておきたい点をまとめます。</p>



<ul class="wp-block-list"><li>期限のセルは必ず日付形式にする。文字列だと <code>deadline instanceof Date</code> の判定で弾かれ、通知されません</li><li>シート名・列の順番を変えた場合は、コード上部の設定や列番号も合わせて直す</li><li>Webhook URL やメールアドレスは外部に共有しない（不正利用を防ぐため）</li><li>初回実行時は GAS の承認画面が出るので、内容を確認して許可する</li></ul>



<h2 class="wp-block-heading"><span id="toc10">まとめ</span></h2>



<p class="wp-block-paragraph">スプレッドシートの一覧から「期限が近い行」「未対応で放置された行」を自動検出し、Google Chat やメールに毎朝通知する仕組みを作りました。</p>



<p class="wp-block-paragraph">ポイントを振り返ります。</p>



<ul class="wp-block-list"><li>行を上から順にチェックし、期限と今日の差を「日数」で判定する</li><li>Webhook を使えば Google Chat に、<code>GmailApp</code> を使えばメールに通知できる</li><li>時間主導トリガーで毎朝自動実行できる</li><li>通知済みフラグで、同じタスクの重複通知を防げる</li></ul>



<p class="wp-block-paragraph">一度作ってしまえば、あとはシートを更新するだけで対応漏れを自動で拾ってくれます。タスク管理だけでなく、案件の進捗や入金チェックなど、期限つきで状態を管理する一覧ならそのまま応用できます。フォームと連携した自動化に興味があれば、<a href="https://mashukabu.com/gas-form-reservation-google-calendar/">GASでフォーム予約をGoogleカレンダーに自動登録する方法</a>もあわせてどうぞ。まずは自分のシートに合わせてコードを書き換え、手動実行で動きを確かめてから、トリガーで自動化してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/gas-deadline-reminder-alert/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
