採用はこちら!

Shinonome Tech Blog

株式会社Shinonomeの技術ブログ
2 min read

バイト先でSlackBotを作った話

バイト先でSlackBotを作った話

初めまして。
AdventCalendar12/5担当、バックエンドコースのHasegawaKotaと申します。バックエンドコースといっても修了して1つの案件に入った後はコーディングはほとんどやっていません笑
こんな人間も少数派ですがPGにいます。

今絶賛卒論に追われています...

自己紹介

・長谷川滉大(はせがわこうた)
・東京理科大学経営学部経営学科
・案件は主にPM補佐担当
・趣味:野球観戦(埼玉西武ライオンズ)漫画アニメ、散歩、ドライブ

現在は4年生ということもあり今年1年は色々なことを経験することが出来た1年になりました!

接客バイト、海外旅行、遊び、資格(aws)、インターンetc,,,

その中で今回は現在インターンをさせていただいている超スタートアップ企業(ECサイトを持っている事業者向けのSaaS企業)で働いている時に書いたGASの紹介になります。

実装概要

notionのデータベースに書いてあることをslackのbotでリマインドするような内容になっています。毎日平日9時前後になりますとslackに送信されます!
おそらく企業でバイトとかしているとエンジニアなら「簡単なスクリプト書いて」とか言われる可能性もありますのでぜひこの機会になんとなく知ってみてください!

引用リンク:https://seleck.cc/1456      

実装としては上記写真のようなnotinのデータベースを1個1個取り出してSlackbotにメッセージとして送信させる実装です。そして上記写真2枚目のようにSlackBotが一個一個メッセージ送信する感じです。(機密情報を隠しているためほぼわからなくなっている笑)

実装内容

// 必要な情報を設定
const notionApiKey = "notion APIキー";  // Notion APIキー
const notionDatabaseId = '自分が取得したいDBのID'; // データベースID
const slackWebhookUrl = 'SlackのWebhook URL'; // Slack Webhook URL

// Notion API URLとリクエスト設定
const notionUrl = `https://api.notion.com/v1/databases/${notionDatabaseId}/query`;
const options = {
    method: 'post',
    headers: {
        "Authorization": `Bearer ${notionApiKey}`,
        "Notion-Version": "2022-06-28",
        "Content-Type": "application/json"
    },
    payload: JSON.stringify({})
};

// Notionからデータを取得
const response = UrlFetchApp.fetch(notionUrl, options);
const data = JSON.parse(response.getContentText());

// データを処理
data.results.forEach(result => {
    // 会社名を取得
    const companyName = result.properties['企業名']?.title?.[0]?.plain_text || "無題";

    // ステータスを取得
    const status = result.properties['ステータス']?.select?.name || "ステータス不明";

    // 担当CS名を取得
    const csNames = result.properties['担当CS']?.people?.map(person => person.name).join(", ") || "担当者なし";

    // 備考を取得
    const remarks = result.properties['備考・現在の進行状況']?.rich_text?.[0]?.plain_text || "備考なし";

    // Slackに送るメッセージを構築
    const slackMessage = {
        text: `会社名: *${companyName}*\n担当CS: *${csNames}*\nステータス: *${status}*\n備考・現在の進行状況: *${remarks}*`
    };

    // Slackへメッセージを送信
    UrlFetchApp.fetch(slackWebhookUrl, {
        method: 'post',
        contentType: 'application/json',
        payload: JSON.stringify(slackMessage)
    });
});

このような感じで実装していました。何かの参考になれば幸いです。


明日はkugaさんです!
よろしくお願いします!