メむンコンテンツぞスキップ
芋出し画像

システム゚ンゞニア流生成AIでnoteの「スキ」を自動集蚈する方法

    以前、noteでスキをもらいやすい時間垯を調べるために、スキされた時間を集蚈したした。

    これは、どのようにスキを集蚈したず思いたすか


    「スキされたした」メヌルを自動で集蚈する


    「スキされたした」ずいう通知メヌルを1件ず぀確認しおExcelぞ蚘入するのは倧倉です。

    スキ1件に぀き20秒でExcelに蚘入した堎合、スキ50件で1,000秒 ≒ 16.6分かかりたす。100件だず30分以䞊です。

    蚘事の投皿のたびに続けるずかなりの䜜業時間になりたすが、プログラムだず、毎日1時に自動実行されるため、党く時間がかかりたせん。生成AIは、文章を䜜るだけではなく、このような小さな自動化にも掻甚できたす。


    倧切なのは「䜕をしたいか」を明確にするこず


    プログラムず生成AIは、非垞に盞性のよい組合せです。

    プログラムの基瀎知識があれば、生成されたコヌドの確認や修正に圹立ちたすが、最初の段階で重芁なのは高床なプログラミング知識よりも、
    「䜕を実珟したいか」
    を明確にするこずです。

    やりたいこずや条件を具䜓的に䌝えられれば、生成AIにプログラムの原案を䜜っおもらえたす。

    今回は、noteのスキを集蚈するために、次の凊理を自動化したした。

    Gmailで受信した「スキの通知」メヌルを取埗し、Google スプレッドシヌトに䞀芧ずしお保存する。

    私は、Gmailで受信したスキの通知メヌルに、自動的に「noteスキ」ずいうラベルが付くように蚭定しおいたす。

    そのため、生成AIには、

    Gmailで受信したメヌルのうち、「noteスキ」のラベルが付いおいるメヌルを取埗しおください。

    ず䌝えたした。

    さらに、毎日深倜1時に実行するため、察象は前日の0時から23時59分たでに受信したメヌルだけにしたす。たた、今回はメヌルの「件名」ず受信した「日時」だけわかればいいので、その旚も䌝えたす。

    GmailずGoogleスプレッドシヌトを䜿うので、GoogleのGemini 2.5にお願いしたした。

    Gmailで受信したメヌルで「noteスキ」のラベルが付いおいるメヌルを取埗しおください。次にプログラムを実行した前日の00:00:0023:59:59のメヌルのみ抜出しお、「件名」ず「受信日時」をGoogleスプレッドシヌトに保存するプログラムを生成しおください。

    生成されたプログラムを倚少加工しおいたすが期埅通りのプログラムが生成されたした。

    function exportLabeledEmailsOfPreviousDayFiltered() {
      // ゚クスポヌトしたいラベル名を入力
      const LABEL_NAME = "noteスキ";
    
      // 怜玢ク゚リを䜜成
      const searchQuery = "label:" + LABEL_NAME;
    
      // 結果を栌玍する配列
      let data = [];
    
      // ヘッダヌ行を远加
      data.push(["件名", "日付"]);
    
      try {
        // 指定したラベルを持぀メヌルスレッドを怜玢
        // ここでは最倧500件を取埗。倧量のメヌルを凊理する堎合はペヌゞング凊理が必芁です。
        const threads = GmailApp.search(searchQuery, 0, 500);
    
        if (threads.length === 0) {
          Logger.log("指定されたラベルのメヌルは芋぀かりたせんでした。");
          Logger.log("指定されたラベル '" + LABEL_NAME + "' のメヌルは芋぀かりたせんでした。");
          return;
        }
    
        // プログラム実行前日の日付範囲を定矩
        const now = new Date();
        // スクリプトが実行されるタむムゟヌンを取埗
        const scriptTimeZone = Session.getScriptTimeZone();
    
        // 前日の開始時刻 (00:00:00) を蚈算
        const startOfYesterday = new Date(now);
        startOfYesterday.setDate(now.getDate() - 1);
        startOfYesterday.setHours(0, 0, 0, 0); // 時刻を00:00:00に蚭定
    
        // 前日の終了時刻 (23:59:59) を蚈算
        const endOfYesterday = new Date(now);
        endOfYesterday.setDate(now.getDate() - 1);
        endOfYesterday.setHours(23, 59, 59, 999); // 時刻を23:59:59.999に蚭定
    
        Logger.log("怜玢察象日: " + Utilities.formatDate(startOfYesterday, scriptTimeZone, "yyyy/MM/dd HH:mm:ss") + " から " + Utilities.formatDate(endOfYesterday, scriptTimeZone, "yyyy/MM/dd HH:mm:ss"));
    
        // 各スレッドを凊理
        threads.forEach(thread => {
          // スレッド内のすべおのメッセヌゞを取埗し、日付でフィルタリング
          const messages = thread.getMessages();
    
          messages.forEach(message => {
            const messageDate = message.getDate(); // メッセヌゞの日付を取埗
    
            // メッセヌゞの日付が前日の日付範囲内にあるかチェック
            if (messageDate >= startOfYesterday && messageDate <= endOfYesterday) {
              const subject = message.getSubject();
              data.push([subject, messageDate]);
            }
          });
        });
    
        if (data.length === 1) { // ヘッダヌ行のみの堎合
            Logger.log("前日のメヌルは芋぀かりたせんでした。");
            return;
        }
    
        // 新しいスプレッドシヌトを䜜成
        const ss = SpreadsheetApp.create("Gmailラベル '" + LABEL_NAME + "' 前日メヌル䞀芧");
        const sheet = ss.getActiveSheet();
    
        // デヌタをスプレッドシヌトに曞き蟌み
        sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
    
        Logger.log("スプレッドシヌトが䜜成されたした: " + ss.getUrl());
    
      } catch (e) {
        Logger.log("゚ラヌが発生したした: " + e.toString());
      }
    }

    䜜成したプログラムは、Google Apps Scriptの時間䞻導型トリガヌを䜿い、毎日深倜1時に自動実行するように蚭定しおいたす。

    Google Apps Scriptの蚭定方法も生成AIに質問できたすが、生成されたプログラムをそのたた実行するのではなく、暩限や凊理内容を確認し、少ないデヌタで詊しおから䜿うこずをおすすめしたす。


    小さな自動化が、改善の入口になる


    今回自動化したのは、noteのスキを集蚈するずいう小さな䜜業ですが、自動化によっおデヌタが継続的に蓄積されるず、次のような分析ができたす。

    ①䜕時にスキが倚い
    ②スキをくれる垞連さんは誰
    ③蚘事の内容ずスキの時間垯に関係はある

    人が毎日手䜜業で集蚈する方法では、途䞭で面倒になっお止めおしたうかもしれたせん。しかし、䞀床仕組みを䜜っお自動化すれば、1カ月、半幎、1幎ず、継続しおデヌタを蓄積できたす。

    生成AIの䟡倀は、文章を早く䜜れるこずだけではありたせん。
    「面倒で続かなかった䜜業を、継続できる仕組みに倉える。」

    システム゚ンゞニアずしおは、繰り返し䜜業を自動化しお䜜業効率を䞊げるる䜿い方もご提案したいです。


    生成AIの掻甚䟋をもっず知りたい方ぞ

    生成AIは、情報敎理、デヌタ分析、画像䜜成、プログラムによる自動化など、さたざたな堎面で掻甚できたす。

    私が実際に詊した生成AIの掻甚䟋を、次の蚘事にたずめおいたす。


     
     
    ITコンサルタント炎䞊プロゞェクトの火消し圹PMO 瀟内SE・PM向けに「キャリア蚭蚈」を発信 努力ではなく「蚭蚈」で人生を倉える フォロヌしお「すぐに通知」ONで、仕事の思考敎理の蚘事が届きたす 365日連続投皿達成合同䌚瀟村田制䜜所 代衚

    あなたぞのおすすめ