9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQuery をチェックして Slack に通知する ― GAS × BigQuery × Slack で手動確認をゼロにする

Posted at

はじめに

日々の業務で「BigQuery に溜まったデータを毎朝チェックして報告したい」「特定条件に該当した情報だけを Slack に自動通知したい」というニーズはよくあります。

しかしこれを人手で行うと、

  • やり忘れ
  • 調べ忘れ
  • 報告漏れ

といったミスにつながります。

そこで本記事では、Google Apps Script (GAS) × BigQuery × Slack を使用し、毎朝決まった時間に自動でデータ取得・通知する仕組みを紹介します。

できること

この仕組みを導入すると、次のような処理を自動化できます。

  • 平日の朝 9:00 にのみ処理を実行
  • BigQuery から指定条件に合致するデータを抽出
  • 「進行中」「今後開始予定」など分類して Slack に通知
  • 毎日の手動確認をゼロに

利用例:

  • 今日の〆切タスク一覧通知
  • 来週期限のプロジェクトアラート
  • 稼働中ジョブのステータス通知
  • 異常値検知のアラート

さまざまな業務に応用できます。

全体構成

処理の全体像は以下の通りです。

  1. 毎朝 9:00(平日のみ)スクリプト起動
  2. BigQuery から「一定期間 or 条件」のデータを取得
  3. 通知用メッセージを整形
  4. Slack Webhook に送信

実装のポイント

1. 平日だけ実行する

const today = new Date(Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy-MM-dd') + 'T00:00:00+09:00');
const day = today.getDay();
if (day === 0 || day === 6) return;  // 日曜 or 土曜

GAS は UTC の影響を受けるため、日本時間での曜日判定は Asia/Tokyo を指定する必要があります。

2. BigQuery からデータを取得する

用途に応じて SQL は変えられますが、例えば「期間内のデータを取りたい」場合は次のような構成が便利です。

SELECT
  ID,
  DataID,
  StartsAt,
  EndsAt
FROM `project.dataset.table`
WHERE
  EndsAt > @now
  AND StartsAt < @one_week_later
ORDER BY StartsAt ASC;

GAS 側では BigQuery.Jobs.query() を使って実行します。

3. Slack 通知文を整形する

Slack は軽い Markdown を解釈するため、見出しや箇条書きを使うと読みやすくなります。

const lines = [];
lines.push(`【データ通知(${today} 時点)】`);
lines.push('');
lines.push('◆ 現在対象のデータ');
// ...

4. Slack Webhook に送信

UrlFetchApp.fetch(webhookUrl, {
  method: 'post',
  contentType: 'application/json',
  payload: JSON.stringify({ text: message }),
});

Webhook URL は Script Properties に保存しておくと安全です。

まとめ

GAS × BigQuery × Slack を組み合わせることで、

  • 毎日の業務チェックの自動化
  • 確認漏れの防止
  • 運用コスト削減

といった大きな効果を得られます。

特に BigQuery の柔軟なデータ抽出 と Slack の視認性の高い通知 を組み合わせれば、さまざまな業務に応用できる“汎用型の自動通知システム”として機能します。

もし「毎朝なんとなく確認している作業」が思い浮かぶなら、それは自動化できるサインです。ぜひ本記事の仕組みを活用し、日々のルーチンをより効率的なものへ進化させてみてください。

9
1
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
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?