#158 Gmailの通知から「スキ」された回数を自動集計する仕組みを作ろう!🤖📊
せっかくいただいた「スキ」、一つひとつが本当に嬉しいものですよね。✨
でも、フォロワーさんが増えてくると嬉しい悲鳴が……。😱
「通知メールが止まらない!📩」
「誰がいつも読んでくれているのか追いきれない!💦」と、
ファンの方との交流が“作業”になってしまっていませんか?🤔
実は私も、大切な「常連さん」を見失いそうになり、もどかしい思いをしてきた一人です。😢
そこで今回は、溜まっていく通知を整理し、「直近60日間で誰が何回スキをくれたか」を一目で把握する仕組みを作りました。📊
これを活用すれば、あなたの発信を支えてくれるファンをしっかり可視化できます。👀💖
その具体的な手法を、皆さんに共有しますね!📢

▼手順詳細を録画しました!
ステップ1:スプレッドシートの準備
Google スプレッドシートを新規作成します。
シート名を「集計結果」に変更します(画面左下のタブをダブルクリックして書き換えます)。
1行目のA1セルに「名前」、B1セルに「スキ数」と入力しておくと見やすくなります(プログラムが自動生成もしてくれますが、先に入れておくと安心です)。

ステップ2:プログラム(GAS)の貼り付け
メニューの「拡張機能」>「Apps Script」をクリックします。
エディタが開いたら、最初から入力されている function myFunction() {...} をすべて消去し、空の状態にします。
以下のコードをコピーして、エディタに貼り付けてください。
上部の「保存(フロッピーディスクのアイコン)」をクリックし、プロジェクト名を適当に「スキ集計」などと付けて保存します。

/**
* 【設定】スプレッドシートを開いたときにメニューを自動追加
*/
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('GAS実行メニュー')
.addItem('スキ通知を集計する', 'aggregateSuki')
.addToUi();
}
/**
* 【メイン】Gmailから「スキ」通知を集計し、スプレッドシートに書き出す
*/
function aggregateSuki() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheetName = '集計結果';
let sheet = ss.getSheetByName(sheetName);
// 1. シートの準備(なければ作成)
if (!sheet) {
sheet = ss.insertSheet(sheetName);
sheet.getRange(1, 1, 1, 2).setValues([["名前", "スキ数"]]);
sheet.getRange(1, 1, 1, 2).setBackground("#f3f3f3").setFontWeight("bold");
}
// 2. 前回の集計結果をクリア(2行目以降)
const lastRow = sheet.getLastRow();
if (lastRow > 1) {
sheet.getRange(2, 1, lastRow - 1, 2).clear();
}
// 3. 検索条件の設定(今日から60日前まで)
const now = new Date();
const sixtyDaysAgo = new Date(now.getTime() - (60 * 24 * 60 * 60 * 1000));
const afterDateStr = Utilities.formatDate(sixtyDaysAgo, "JST", "yyyy/MM/dd");
// 修正箇所:「スキされました!」より前を抽出対象にするための検索クエリ
const query = `label:inbox subject:"スキされました!" after:${afterDateStr}`;
// 4. Gmailからデータを抽出
const threads = GmailApp.search(query);
const counts = {};
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(msg => {
const date = msg.getDate();
if (date >= sixtyDaysAgo && !msg.isInTrash()) {
const subject = msg.getSubject();
// 修正箇所:「スキされました!」より前の文字列を変数として取得
const match = subject.match(/(.*)スキされました!/);
if (match && match[1]) {
// 余計な空白を取り除き、末尾の「さんに」が残っていればそれも削除して集計
const name = match[1].trim().replace(/さんに$/, "");
counts[name] = (counts[name] || 0) + 1;
}
}
});
});
// 5. データを集計・並べ替え(多い順)
const resultData = Object.keys(counts).map(name => [name, counts[name]]);
resultData.sort((a, b) => b[1] - a[1]);
// 6. スプレッドシートへ書き出し
if (resultData.length > 0) {
sheet.getRange(2, 1, resultData.length, 2).setValues(resultData);
Browser.msgBox("直近60日分の「スキ」を集計しました!");
} else {
Browser.msgBox("該当するメールが見つかりませんでした。");
}
}
ステップ3:初回実行と「承認」
Googleのプログラムを初めて動かすときは、自分のGmailにアクセスする許可を出す必要があります。
スプレッドシートの画面を一度リロード(再読み込み)してください。
メニューバーの右側に「GAS実行メニュー」という項目が出現します。
「GAS実行メニュー」>「スキ通知を集計する」をクリックします。
「承認が必要です」というポップアップが出るので「権限を確認」を押します。
自分のGoogleアカウントを選択します。
「このアプリは Google で確認されていません」という警告が出ますが、「詳細」をクリックし、一番下の「スキ集計(安全ではないページ)に移動」をクリックしてください。
※自分で書いたコードなので安全です。
「許可」をクリックします。




ステップ4:集計の確認
承認が終わるとプログラムが走り始めます。
しばらく待つと「集計が完了しました!」と表示され、スプレッドシートに名前とスキの数が自動で書き込まれます。
今後は、スプレッドシートを開いて「GAS実行メニュー」からいつでも最新の状況に更新できます。



▼公式LINEを開設しました!
限定企画や特典情報をどこよりも早くお届けします。
【登録はこちらから】
#noteの書き方 #noteのつづけ方 #コンテンツマーケティング #GoogleAppsScript #業務効率化 #スプレッドシート #GAS #自動化 #ファンマーケティング #データ分析
いいなと思ったら応援しよう!
📝 チップの利用方針について
受け取ったチップは全てnote内で使用しています。
これは、チップをnote内で循環させ、noteのさらなる発展に貢献するためです。
具体的には、受け取ったチップで他のクリエイターにチップをあげたり、有料記事を購入したりしています。