超簡単! あなたは何回「なんのはなしですか」って言った!?
みなさん、自分が何回「なんのはなしですか」ってタグをつけて投稿したか、気になりませんか? え? 気にならない?
気になってよ!
そんなみなさんに、自分が何回「なんのはなしですか」ってタグをつけて投稿したかを数える方法を伝授します。
思いついたのはわたしですが、やり方を考えてコードを書いてくれたのはAIさんですのであしからず。
また、PCかタブレットなどからしかできません。また、面倒くさいのでChromeからの手順しか書いていません。
やりたいのにPCがない! もしくは、Chromeなんか使ってたまるか! はたまた、こんな手順書いてもらってもちんぷんかんぷん! という方は、わたしにいくばくか(500円くらい)のチップをいただければ、分析結果をお出しいたします。
1.あなたの投稿記事のURLを取得
自分の記事一覧のページを出しましょう。ここで、公開中だけを選んでください。


お好みで
期間やマガジンて絞っても
かまいませんよ!
このままスクロールして一番古い記事まで全部が表示されるようにします。これ、面倒くさいのでこれも自動にすればよかったんですけど、なんせこのとき、やさぐれてて暇だったので、手動でやってしまいました。
例えば、残念なぱちこさんのように、記事が2000もある場合がありますよね。かなり大変だと思いますが頑張ってください。2000もなければそんなに大変ではありません。2000あっても、だいたい、3分くらいでスクロールできました。
ここで、ブラウザの上で右クリックしてみてください。マウスじゃない? なら右クリック相当の何かです笑

要は「検証」を開きたいんですね。「F12」か「Ctrl + Shift + I」などでも開くことができます。Macの場合はコントロールキーじゃなくてよつばマークでしょうか。あれなんていうの?

開けました?
そしたら、「Console」っていうタブを選択します。

そこに、こちら↓をコピペします。そして、Enter!
let urls = [];
document.querySelectorAll('a[href*="/n/"]').forEach(a => {
urls.push(a.href);
});
console.log([...new Set(urls)]);もしも、こういうことを言われたら……
Don’t paste code into the DevTools Console that you don’t understand or haven’t reviewed yourself. This could allow attackers to steal your identity or take control of your computer. Please type ‘allow pasting’ below and press Enter to allow pasting.
まずはこっちを貼ってみてください。
allow pasting無事に答えが出てきたら

お答えの上で右クリックして、コピーします。
2.スプレッドシートに貼り付け
こんな感じでA列にだららららら~と貼り付けましょう。一番上は関係ないですけど、無視でいいでしょう。

実際には貼り付けるとこうなります。

前後のかっこの行や、自分のアカウントではない行は削除したのでOKです。今はこれ、G列に貼ってますけど、A列にしましょうね!
全部貼れたか、公開中の記事数とシートの最終行の数を確認してください。
3.タグの取得
貼り付けられたら、GASさんに会いに行きます。

これをクリックしてみてください。
こういう画面になるはず。これはもう貼り付けた後のものです。

貼り付けるのはこちら↓です。
function countTagsFromSheet() {
const sheet = SpreadsheetApp.getActiveSheet();
const urls = sheet.getRange("A1:A").getValues().flat().filter(Boolean);
const props = PropertiesService.getScriptProperties();
let index = Number(props.getProperty("index")) || 0;
let tagCount = JSON.parse(props.getProperty("tagCount") || "{}");
const batchSize = 50;
const end = Math.min(index + batchSize, urls.length);
for (let i = index; i < end; i++) {
const url = urls[i];
try {
const html = UrlFetchApp.fetch(url).getContentText();
const matches = html.match(/hashtag\/[^"]+/g);
if (!matches) continue;
// クリーンアップしてタグ名だけ取る
const cleaned = matches.map(tag => {
let name = tag.replace("hashtag/", "");
name = name.split("?")[0]; // ←ここ重要
return decodeURIComponent(name);
});
const uniqueTags = [...new Set(cleaned)];
uniqueTags.forEach(tag => {
tagCount[tag] = (tagCount[tag] || 0) + 1;
});
} catch (e) {}
}
props.setProperty("index", end);
props.setProperty("tagCount", JSON.stringify(tagCount));
Logger.log(`進捗: ${end}/${urls.length}`);
Logger.log(tagCount);
if (end >= urls.length) {
Logger.log("✅ 完了!");
Logger.log(tagCount);
props.deleteProperty("index");
props.deleteProperty("tagCount");
}
} 貼り付けられたら、まずは保存して、それから実行を押しましょう。
権限をあれこれ聞かれますので、OKしてください。

ちなみに、一度に動かすとGASの時間制限に引っかかるので、50記事ずつ回す仕組みになっています。100記事程度なら、2回実行すれば終わりますので、「✅完了」が出るまで実行を再度押すのを続けてください。
残念なぱちこさんのように2000記事もある場合は、トリガーで30分に1回くらい自動実行させておくと便利です。(これについて詳しくは耳打ちしてください)

4.実行結果を取得
完了したときに出たlogの{}の中身を選択します。

これをスプレッドシートにコピペしましょう。
新しいシートを作るのがよきです。
ただ貼り付けただけだと

一つのセルに全部入ってしまうので、

「テキストを列に分割」にしてあげましょう。

「,」で区切られているので何もしなくても分割できると思います。
でも、これだと見にくいですよね?
とりあえず、この行を全選択⇒コピーしましょう。
別のシートの貼り付けたいセルで、右クリックして、「特殊貼り付け」の「転地して貼り付け」を選ぶと、

こんなふうに縦に並んでくれます。

貼り付けられて選択されているままに、先ほどと同じように「データ」から「テキストを列に分割」します。

今度は、区切りが「=」なので、勝手には分かれてくれません。なので、「自動的に検出」を選びます。

その中の「カスタム」を選択。
すると、こんな風に入力フォームが現れます。

ここに「=」を入れてあげると

きれいに表になりましたね!
後は、フィルターなどで並び順を変更したり、任意のタグを探したりして楽しんでください!
まとめ🌱
いかがでしたか?
「なんのはなしですか」を何回投稿したかって始めましたけども、普通にどのタグを何回使ったかを取得することができます。
〇周年や〇記事目、年末の振り返り記事などでぜひぜひ、カウントしてみてくださいね!
考えたのはAIさんなので、ご自由にコードを持って帰っていただいてOKです。もっと使いやすく改変されてもOKです。これ、コピペを基本にしてますけど、本当は、スプレッドシートに書かせることも可能です。ただね、そこまですることじゃなかったので、端折りました笑
自動化の大事なことは、コードの複雑さと利用回数のバランスです。一度しか使わない、もしくは年に数回しか使わないコードにこだわりすぎると、効率化という意味ではアンバランスですよ✨
ご質問は無料でお受けいたしますので、DMやらなにやらで耳打ちください。
全部やってよ、というご依頼の場合はチップください笑(あ、こいつ怪しいやつだと思われるかもしれないよね? 中の人はぱちこさんですのでご安心ください)

