0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GoogleフォームSlack通知の重複を防ぐ考え方

0
Posted at

Googleフォームの回答をSlackに通知すると、チームで気づきやすくなります。

でも、通知を作ると次に起きるのが重複通知です。

GASを再実行したら同じ通知が出た
トリガーを2つ作っていた
エラー復旧で再送したら二重投稿になった
Slackには流れたが誰も担当していない

この記事では、GoogleフォームのSlack通知を作るときに、重複を防ぐ考え方を整理します。

Slack公式ドキュメントでは、Incoming WebhooksはJSON payloadをWebhook URLへ送ってチャンネルにメッセージを投稿する仕組みとして説明されています。

Googleフォーム側でApps Scriptを使う場合は、フォーム送信トリガーも確認します。

通知は、届いたら終わりではありません。

通知済み状態を残して、対応状況とは分けて管理します。

通知の重複は自然に起きる

Slack通知の重複は、設計が雑だから起きるとは限りません。

実務では自然に起きます。

トリガーを作り直した
手動実行でテストした
処理途中でエラーになった
投稿後にステータス更新だけ失敗した
同じ回答を再処理した

Webhookは投稿できても、「この回答はもう投稿済みか」をSlack側が知っているわけではありません。

その判断は、こちら側の回答レコードに持たせます。

slack_notified_at を持つ

一番シンプルな方法は、回答ごとに slack_notified_at を持つことです。

response_id
submitted_at
status
owner
slack_notified_at
slack_message_url
last_error

通知処理はこう考えます。

if slack_notified_at is empty:
  post to Slack
  set slack_notified_at
else:
  skip posting

これだけで、再実行時の重複をかなり防げます。

可能なら、投稿後のメッセージURLやタイムスタンプも残します。

slack_message_url
slack_channel
slack_posted_by

後から「どの通知のことか」を確認しやすくなります。

通知状態と対応状況を分ける

Slack通知が出たからといって、対応が終わったわけではありません。

ここを混ぜると、対応漏れが起きます。

避けたい考え方です。

Slack通知済み = 対応済み

実際にはこうです。

slack_notified_at: 2026-06-18 10:00
status: new
owner: empty

これは、通知は出たがまだ未対応です。

次の状態になって初めて、対応が進んでいます。

status: assigned
owner: 山田
next_action: 本日中に一次返信

通知は気づくための仕組みです。

対応状況は仕事を進めるための記録です。

エラー時は「未通知」か「不明」を分ける

Slack投稿では、投稿そのものは成功したが、その後の記録更新に失敗することがあります。

このとき単純に再実行すると、二重投稿になるかもしれません。

状態は少し分けます。

slack_notification_state:
  pending
  sent
  failed
  unknown

unknown は、投稿できたか確認が必要な状態です。

この状態を作っておくと、機械的に再送せず、人が確認できます。

実務では「失敗したら全部再送」が一番危険です。

Slack本文に入れる情報を絞る

Slack通知に回答全文を入れたくなります。

でも、個人情報や長文が流れすぎると、あとから扱いづらくなります。

最低限にします。

新しい回答が届きました
回答ID: R-20260618-001
カテゴリ: 資料請求
要約: 料金について相談したい
管理URL: ...

Slackには、対応するための入口を置きます。

正本は管理表や回答レコード側です。

最小チェックリスト

GoogleフォームSlack通知を作る前に、これを確認します。

[ ] response_id がある
[ ] slack_notified_at を持つ
[ ] slack_notification_state を持つ
[ ] 投稿後にメッセージURLやチャンネルを残す
[ ] 再実行時は slack_notified_at を見てskipする
[ ] 通知済みと対応済みを混ぜない
[ ] unknown 状態を人が確認できる
[ ] Slack本文に個人情報を入れすぎない

Slack通知は便利です。

ただし、通知を増やすほど、通知済み状態の管理が大事になります。

Googleフォームに限らず、フォーム回答のSlack通知を全件通知から条件付き通知へ切り替えるなら、statusownerpriority、期限を使って通知条件を分けます。

フォーム回答をSlack通知する設計

フォーム回答をSlack通知する全体設計は、FORMLOVAの正本記事にまとめています。

フォーム回答をSlack通知するときの設計を見る

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?