「毎日の日報、手で書くのめんどくさい」「Slackと共有したい」がGAS 80行で解決します。
やりたいこと
- スプレッドシートのテンプレート行から、当日分のタスクを取得
- Slack Webhook に投稿
- 毎日 18:00 に自動実行
スクリプト全体
const SPREADSHEET_ID = "xxxxxxxxxxxxxxxxxxxx";
const SHEET_NAME = "日報";
const SLACK_WEBHOOK = PropertiesService.getScriptProperties().getProperty("SLACK_WEBHOOK");
function postDailyReport() {
const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
const today = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd");
const rows = sheet.getDataRange().getValues();
const todayRows = rows.filter((r) => Utilities.formatDate(r[0], "Asia/Tokyo", "yyyy-MM-dd") === today);
if (todayRows.length === 0) {
Logger.log("本日のタスクがありません");
return;
}
const tasks = todayRows
.map((r) => `• ${r[1]}(${r[2]})`)
.join("\n");
const message = {
text: `*${today} の日報*\n${tasks}`,
};
UrlFetchApp.fetch(SLACK_WEBHOOK, {
method: "post",
contentType: "application/json",
payload: JSON.stringify(message),
});
Logger.log("Slackに投稿しました");
}
セットアップ手順
1. Slack Webhook URL を取得
Slackアプリ → Incoming Webhooks → 投稿先チャンネル選択 → URLコピー
2. スクリプトプロパティに保存
GASエディタ:プロジェクト設定 → スクリプトプロパティ → SLACK_WEBHOOK を追加
3. トリガー設定
GASエディタ:トリガー → 新規 → postDailyReport を 毎日 18:00 に実行
応用ポイント
- 複数チャンネル投稿:Webhook URLを配列で持って
forEachでループ - 画像添付:
blocksに image type を追加 - GitHub Issues 連携:Issue タイトルを取得して日報に追加
- AI要約:Claude APIで1日のSlack履歴を要約してから投稿
「自分で組むのは面倒」な方へ
- 業務固有のタスクテンプレ設計
- 複数システム(GitHub / Notion / Backlog)との連携
- 失敗時の通知とリトライ
このあたりまでパッケージ化して請け負っています。 お問い合わせ →