1. 目的
本GASは、記事台帳に登録されている記事URLをもとに、公開ページのHTMLを取得し、記事内に無料ダウンロード導線が設置されているかを一覧化することを目的とする。
特に、過去に手動で設置した「ちょっとだけ余談ですが!」ブロックと、6月以降に設置した「ちょっとお仕事のお話しです」ブロックを分けて検出する。
これにより、ダイソー記事・どこの国記事などに、無料DL-LPへの導線がどの程度設置されているかを把握し、未設置記事・修正対象記事・追加対応記事を判断しやすくする。
2. 基本方針
本GASでは、WordPress管理画面の本文データではなく、公開URLへHTTPSアクセスして取得したHTMLを確認対象とする。
理由は、ブログパーツやショートコードなどが、公開ページ上ではHTMLとして展開されているためである。
記事本文上ではブログパーツの指定だけであっても、公開ページHTMLを取得すれば、実際に読者に表示されている「ちょっとだけ余談ですが!」「ちょっとお仕事のお話しです」などの導線を確認できる。
3. 入力元スプレッドシート
入力元は、既存の記事台帳スプレッドシートとする。
スプレッドシートURL:
対象シート名:記事台帳
4. 記事台帳のカラム構成
記事台帳シートには、下記の順番でカラムが存在する前提とする。
記事ID
記事タイトル
URL
ページパス
スラッグ
主カテゴリ
従カテゴリ
公開日
更新日
状態
最終確認日
備考
従カテゴリー2
最新PV
roll
GASでは、可能な限り列番号の決め打ちではなく、ヘッダー名をもとに必要な列を取得する。
主に使用する列は下記とする。
記事ID
記事タイトル
URL
主カテゴリ
従カテゴリ
従カテゴリー2
最新PV
状態
れるようにする。
5. 対象記事
V1.0では、記事台帳内のURLが存在する記事を対象とする。
ただし、確認対象の記事カテゴリは固定ではなく、GAS実行時に選択または入力できるようにする。
当面の確認優先対象は、主に下記カテゴリの記事とする。
ダイソー
どこの国
在庫管理
LDAC-blue
PC・スマホ便利技
WORDPRESS
STEPmini
アピスmini
STOCKmini
受発注管理
なお、対象カテゴリは上記に限定しない。記事台帳に存在する主カテゴリ・従カテゴリ・従カテゴリー2をもとに、任意のカテゴリを指定して実行できる仕様とする。
5-1. 設定シートの作成ルール
設定シートは、ユーザーが事前に手作業で作成する必要はない。
GAS実行時に、入力元の記事台帳スプレッドシート内に「設定」シートが存在するか確認する。
「設定」シートが存在しない場合は、GASが自動で新規作成する。
「設定」シートがすでに存在する場合は、その内容を読み取り、実行条件として使用する。
設定シート名:
設定
設定シートを作成する場所:
入力元の記事台帳スプレッドシート内
設定シートを作成するタイミング:
GAS初回実行時
または、設定シートが存在しない状態でGASを実行した時
設定シートは、GASの実行条件を指定するためのシートであり、確認結果の出力先ではない。
確認結果は、GASが新規作成する別スプレッドシート「DL導線一覧」内の「DL導線」シートに出力する。
全体の関係は下記とする。
入力元スプレッドシート
└ 記事台帳
└ 設定 ← GASが自動作成・読み取り
出力先スプレッドシート
└ DL導線 ← GASが新規作成して結果を書き込み
5-2. 対象カテゴリの指定方法
V1.0では、対象カテゴリをGAS内で固定せず、設定シートから指定できるようにする。
設定シート名は下記とする。
設定
設定シートでは、下記の項目を指定する。
項目:対象モード
値:全件 または カテゴリ指定
項目:対象カテゴリ
値:ダイソー など
項目:最大取得件数
値:50 など
項目:全件対象
値:true または false
対象モードは、下記のいずれかとする。
全件
カテゴリ指定
対象モードが「全件」の場合は、記事台帳内でURLが存在する記事をすべて確認対象とする。
対象モードが「カテゴリ指定」の場合は、対象カテゴリに入力された文字列をもとに、対象記事を絞り込む。
5-3. 対象カテゴリの入力方法
対象カテゴリは、単一カテゴリまたは複数カテゴリを指定できる。
単一カテゴリを指定する場合の例:
ダイソー
複数カテゴリを指定する場合は、カンマ区切りで入力する。
例:
ダイソー,どこの国
または、
在庫管理,STOCKmini,アピスmini
GAS側では、対象カテゴリ欄の入力値をカンマで分割し、複数カテゴリとして処理する。
5-4. プルダウン選択と手入力の併用
対象カテゴリ欄は、プルダウンから選択できるようにする。
ただし、プルダウンにないカテゴリや、複数カテゴリを指定したい場合に備え、手入力も許可する。
そのため、対象カテゴリ欄は下記の両方に対応する。
プルダウン選択
手入力
カンマ区切りによる複数カテゴリ指定
これにより、最初は「ダイソー」だけ、次に「どこの国」、その次に「ダイソー,どこの国」、必要に応じて「全件」という形で柔軟に確認できる。
5-5. カテゴリ候補リストの作成
GASは、記事台帳の下記列からカテゴリ候補を抽出できるようにする。
主カテゴリ
従カテゴリ
従カテゴリー2
抽出したカテゴリ候補は、重複を除外してカテゴリ候補リストとして管理する。
V1.0では、まず主カテゴリを中心に候補リストを作成する。
将来的には、従カテゴリ・従カテゴリー2も含めたカテゴリ候補リストを作成できるようにする。
5-6. カテゴリ候補の並び順
カテゴリ候補は、最新PVの大きいカテゴリを優先して表示する。
プルダウンで表示する場合は、PVの大きいカテゴリを上位に表示する。
リンクリストやカテゴリ一覧として表示する場合は、PVの大きいカテゴリを左側または上位に表示する。
これにより、PVの大きいカテゴリから優先して確認しやすくする。
初期優先カテゴリの例:
ダイソー
どこの国
在庫管理
LDAC-blue
PC・スマホ便利技
WORDPRESS
STEPmini
アピスmini
STOCKmini
PVは参考値であり、カテゴリ選択の優先順位を決めるために利用する。
5-7. 対象カテゴリの判定方法
対象カテゴリの判定は、記事台帳の下記列を対象に行う。
主カテゴリ
従カテゴリ
従カテゴリー2
上記のいずれかに、対象カテゴリ文字列が含まれる場合、その記事を処理対象とする。
たとえば、対象カテゴリに「ダイソー」と入力した場合、主カテゴリ・従カテゴリ・従カテゴリー2のいずれかに「ダイソー」を含む記事を対象とする。
対象カテゴリに「ダイソー,どこの国」と入力した場合、いずれかのカテゴリ欄に「ダイソー」または「どこの国」を含む記事を対象とする。
5-8. 全件対象モード
対象モードが「全件」の場合は、カテゴリ判定を行わず、URLが存在する記事をすべて確認対象とする。
この場合、主カテゴリ・従カテゴリ・従カテゴリー2の内容に関係なく、記事台帳内のURLが存在する記事を順番に処理する。
ただし、最大取得件数が設定されている場合は、その件数を上限とする。
5-9. 対象外条件
対象外とする記事は下記とする。
URLが空欄の記事
状態が明らかに非公開・削除・下書き等の記事
URL取得時にエラーとなる記事
対象モードが「カテゴリ指定」で、指定カテゴリに一致しない記事
対象外となった記事は、V1.0では原則として出力しない。
ただし、必要に応じて、メモ列に「対象カテゴリ外」「URL空欄」などの理由を出して記録できるようにする。
6. 出力先スプレッドシート
確認結果は、入力元の記事台帳スプレッドシート内には直接出力しない。
GAS実行時に、確認結果出力用の新規スプレッドシートを作成し、その中に確認結果シートを作成する。
出力スプレッドシート名:
DL導線一覧
出力シート名:
DL導線
GASは、記事台帳スプレッドシートを入力元として読み込み、確認結果を別スプレッドシートに出力する。
これにより、元の記事台帳を汚さずに、DL導線の確認結果だけを独立して管理できる。
7. 出力スプレッドシートの作成ルール
V1.0では、GAS実行時に新しい出力用スプレッドシートを作成する。
作成するスプレッドシート名は下記とする。
DL導線一覧
ただし、同名のスプレッドシートがすでに存在していても、V1.0では既存ファイルの上書きは行わない。
GAS実行ごとに新しいスプレッドシートを作成する。
必要に応じて、GAS内でスプレッドシート名に実行日時を付与できるようにする。
例:
DL導線一覧_20260629_153000
ただし、正式な出力スプレッドシート名の基本形は「DL導線一覧」とする。
8. 出力シートの作成ルール
新規作成した出力用スプレッドシート内に、下記シートを作成する。
DL導線
Googleスプレッドシートを新規作成した直後は、通常「シート1」のような初期シートが存在する。
V1.0では、その初期シートを「DL導線」にリネームして使用する。
9. 出力カラム
出力シート「DL導線」には、下記のカラムを出力する。
確認日時
記事ID
カテゴリ
記事タイトル
URL
PV
余談ブロック数
お仕事ブロック数
その他DL導線数
DLリンク総数
余談ブロック有無
お仕事ブロック有無
DLリンク有無
位置判定
出現率
リンクURL
周辺テキスト
判定
メモ
10. カテゴリ出力ルール
カテゴリ列には、記事台帳の主カテゴリ・従カテゴリ・従カテゴリー2をもとに出力する。
基本形式は下記とする。
主カテゴリ / 従カテゴリ / 従カテゴリー2
空欄のカテゴリは出力時に省略する。
例:
ダイソー / 収納
どこの国 / 家電
在庫管理 / SKU / 商品コード
11. 検索対象HTML
GASでは、記事台帳のURLに対して UrlFetchApp.fetch() を実行し、公開ページのHTMLを取得する。
取得したHTMLを文字列として解析し、下記を確認する。
余談ブロックの有無
お仕事ブロックの有無
無料DL-LPリンクの有無
各ブロックの出現回数
DLリンクの出現回数
記事内のざっくりした出現位置
検出箇所の周辺テキスト
V1.0では、本文エリアのみの厳密な抽出は行わず、取得した公開HTML全体を対象にする。
12. 余談ブロックの検出条件
余談ブロックは、下記文字列を含む場合に検出する。
ちょっとだけ余談ですが!
表記ゆれ対策として、下記も検出対象に含める。
ちょっとだけ余談ですが
HTML内に上記文字列が複数回出現した場合は、その回数を余談ブロック数としてカウントする。
13. お仕事ブロックの検出条件
お仕事ブロックは、下記文字列を含む場合に検出する。
ちょっとお仕事のお話しです
表記ゆれ対策として、下記も検出対象に含める。
ちょっとお仕事のお話し
ちょっとお仕事の話
ちょっと仕事の話
ちょっとお仕事
ただし、V1.0で最も重視する正式検索文字列は下記とする。
ちょっとお仕事のお話しです
HTML内に上記文字列が複数回出現した場合は、その回数をお仕事ブロック数としてカウントする。
14. その他DL導線の検出条件
余談ブロック、お仕事ブロックの文言はないが、無料DL-LPへのリンクURLが存在する場合は、その他DL導線として扱う。
V1.0では、余談ブロック・お仕事ブロックとDLリンクの厳密な対応関係までは判定しない。
そのため、その他DL導線数は、DLリンク総数と余談・お仕事ブロック数を参考にした概算扱いとする。
15. DLリンク判定
無料DL-LPへのリンク有無は、リンク先URLに含まれる文字列で判定する。
V1.0では、DL-LP URLまたはDL-LPを識別できるURLの一部をGAS内の定数として定義する。
判定は完全一致ではなく、部分一致で行う。
理由は、URLにパラメータが付く可能性があるためである。
例:
https://example.com/stockmini/
https://example.com/stockmini/?utm_source=daiso
https://example.com/stockmini/?apice_article=xxxxx
これらを同じDL-LPへのリンクとして判定できるようにする。
GAS作成時に、実際のDL-LP URLまたはURLの一部を定数として設定する。
16. 検出回数
余談ブロック数:
HTML内に余談系キーワードが出現した回数をカウントする。
お仕事ブロック数:
HTML内にお仕事系キーワードが出現した回数をカウントする。
DLリンク総数:
HTML内にDL-LP URL判定文字列が出現した回数をカウントする。
その他DL導線数:
余談ブロック・お仕事ブロックの文言は検出されないが、DLリンクが存在する導線を目安としてカウントする。
V1.0では、まず検出状況の把握を優先し、厳密なブロック単位のリンク対応までは行わない。
17. 有無判定
余談ブロック有無:
余談ブロック数が1以上の場合は「あり」
0の場合は「なし」
お仕事ブロック有無:
お仕事ブロック数が1以上の場合は「あり」
0の場合は「なし」
DLリンク有無:
DLリンク総数が1以上の場合は「あり」
0の場合は「なし」
18. 位置判定
検出したキーワードがHTML内のどのあたりにあるかを、HTML全体に対する出現位置の比率で判定する。
V1.0では、本文エリアの厳密抽出は行わず、公開HTML全体を対象としてざっくり判定する。
判定基準は下記とする。
0%〜25%:LEAD付近
25%〜75%:MIDDLE付近
75%〜100%:SUMMARY付近
複数検出された場合は、検出位置ごとに判定し、スラッシュ区切りで出力する。
例:
LEAD付近 / MIDDLE付近 / SUMMARY付近
検出されない場合は空欄とする。
19. 出現率
出現率は、HTML全体の文字数に対して、検出キーワードが出現した位置の割合を出力する。
例:
18%
52%
86%
複数検出された場合は、スラッシュ区切りで出力する。
例:
18% / 52% / 86%
20. リンクURL
HTML内から、DL-LPに該当するリンクURLを抽出して出力する。
V1.0では、href 属性内のURLを正規表現で抽出する。
同じリンクURLが複数回出現する場合は、重複を除外して出力する。
複数のリンクURLが存在する場合は、改行区切りで出力する。
21. 周辺テキスト
余談ブロックまたはお仕事ブロックが検出された場合、その前後のテキストを抜き出して出力する。
抜き出し範囲は、検出位置の前後100文字程度とする。
HTMLタグは可能な範囲で除去し、確認しやすいテキストに整形する。
複数検出された場合は、下記のようにラベル付きで出力する。
[余談1] ……ちょっとだけ余談ですが!……
[お仕事1] ……ちょっとお仕事のお話しです……
[お仕事2] ……ちょっとお仕事のお話しです……
22. 判定ルール
判定列には、下記のいずれかを出力する。
OK:
余談ブロックまたはお仕事ブロックがあり、DLリンクもある。
DLリンクのみ:
DLリンクはあるが、余談ブロック・お仕事ブロックがない。
ブロックのみ:
余談ブロックまたはお仕事ブロックはあるが、DLリンクがない。
未設置:
余談ブロック・お仕事ブロック・DLリンクのいずれもない。
要確認:
HTML取得はできたが、判定があいまいな場合。
取得エラー:
URL取得に失敗した場合。
23. メモ列
メモ列には、GAS側で補足情報を出力する。
例:
URL空欄
HTTPエラー
取得タイムアウト
DLリンクURL未設定
対象カテゴリ外
HTML取得成功
ブロック複数あり
DLリンク複数あり
余談あり
お仕事あり
余談・お仕事両方あり
24. GASの処理手順
GASの処理手順は下記とする。
- 入力元スプレッドシートをIDで開く
- 記事台帳シートを取得する
- ヘッダー行から必要な列番号を取得する
- 設定シートを取得または作成する
- 設定シートから対象モード・対象カテゴリ・最大取得件数を読み取る
- 記事台帳の主カテゴリ・従カテゴリ・従カテゴリー2からカテゴリ候補を抽出する
- カテゴリ候補を重複除外し、必要に応じてPV順に並べる
- 設定シートの対象カテゴリ欄にプルダウン候補を設定する
- 出力用スプレッドシート「DL導線一覧」を新規作成する
- 初期シートを「DL導線」にリネームする
- 出力ヘッダーを書き込む
- 記事台帳のデータを1行ずつ読む
- URLが空欄の行はスキップまたはエラー記録する
- 対象モードが「カテゴリ指定」の場合、主カテゴリ・従カテゴリ・従カテゴリー2をもとに対象カテゴリに一致するか判定する
- 対象モードが「全件」の場合、カテゴリ判定を行わずURLが存在する記事を対象とする
- 最大取得件数に達した場合は、それ以降のURL取得を行わない
- 対象記事のURLに対して
UrlFetchApp.fetch()を実行する - 公開HTMLを取得する
- 余談系キーワードをカウントする
- お仕事系キーワードをカウントする
- DL-LPリンクをカウントする
- 検出位置を比率で計算する
- LEAD / MIDDLE / SUMMARY を判定する
- 周辺テキストを抽出する
- 判定列を作成する
- 結果を配列に格納する
- 最後にまとめて「DL導線」シートへ書き込む
- 実行ログに作成した出力スプレッドシートURLを出力する
25. 実行時間対策
対象記事数が多い場合、GASの実行時間制限にかかる可能性がある。
V1.0では、1回の最大処理件数を定数で設定できるようにする。
例:
MAX_FETCH_COUNT = 50
また、連続アクセスによるサイト負荷を避けるため、必要に応じてURL取得ごとに短い待機時間を入れる。
例:
SLEEP_MS = 300
26. V1.0で実装する内容
V1.0で実装する内容は下記とする。
記事台帳からURLを読む
公開HTMLを取得する
余談ブロック数を数える
お仕事ブロック数を数える
DLリンク総数を数える
位置判定をざっくり出す
出現率を出す
リンクURLを抽出する
周辺テキストを出す
DL導線一覧スプレッドシートを新規作成する
DL導線シートに一覧化する
27. V1.0では実装しない内容
V1.0では、下記は対象外とする。
WordPress管理画面から本文を取得する
WordPress REST APIを使う
本文エリアだけを厳密抽出する
H2単位で正確に位置判定する
ブログパーツの種類を完全分類する
DLリンクのクリック計測を行う
記事本文を自動修正する
記事台帳へ結果を自動で戻す
既存の出力スプレッドシートを検索して上書きする
28. 今後の拡張案
V1.1以降で検討する内容は下記とする。
本文エリアだけを抽出して判定精度を上げる
H2見出しを検出し、どのH2付近に導線があるか判定する
LEAD / MIDDLE / SUMMARY をより正確に分類する
未設置記事だけを抽出する
ダイソー・どこの国などカテゴリ別に集計する
記事台帳へDL導線設置状況を戻す
リンク先URLの種類別に分類する
リンク切れチェックを追加する
実行途中から再開できるようにする
出力スプレッドシートを固定し、毎回上書きする方式に変更する
29. 初期設定値
GAS内で設定する主な定数は下記とする。
SPREADSHEET_ID:
123KR81GTj0v-VTFq9bSSuRyY8kqBKFZ77DxToYI3gd4
LEDGER_SHEET_NAME:
記事台帳
SETTINGS_SHEET_NAME:
設定
OUTPUT_SPREADSHEET_NAME:
DL導線一覧
OUTPUT_SHEET_NAME:
DL導線
DEFAULT_TARGET_MODE:
カテゴリ指定
DEFAULT_TARGET_CATEGORIES:
ダイソー
TARGET_MODE_OPTIONS:
全件
カテゴリ指定
DEFAULT_MAX_FETCH_COUNT:
50
DEFAULT_ALL_TARGET:
false
YODAN_KEYWORDS:
ちょっとだけ余談ですが!
ちょっとだけ余談ですが
OSHIGOTO_KEYWORDS:
ちょっとお仕事のお話しです
ちょっとお仕事のお話し
ちょっとお仕事の話
ちょっと仕事の話
ちょっとお仕事
MAX_FETCH_COUNT:
50
SLEEP_MS:
300
DL_LINK_PATTERNS:
GAS作成時に無料DL-LPのURLまたはURLの一部を設定する。
設定シートが存在しない場合、GASは入力元の記事台帳スプレッドシート内に「設定」シートを自動作成する。
設定シートを新規作成する場合、下記の初期値を自動で書き込む。
項目 / 値 / 説明
対象モード / カテゴリ指定 / 全件 または カテゴリ指定
対象カテゴリ / ダイソー / カンマ区切りで複数指定可能
最大取得件数 / 50 / 1回の実行で取得する最大記事数
全件対象 / false / trueの場合は全件対象
対象カテゴリの初期値は「ダイソー」とする。
ただし、設定シートで下記のように変更できるようにする。
ダイソー
どこの国
ダイソー,どこの国
在庫管理
全件
設定シートの対象モードが「全件」の場合は、対象カテゴリの値は無視する。
設定シートの対象モードが「カテゴリ指定」の場合は、対象カテゴリ欄の値を読み取り、カンマ区切りで複数カテゴリに分割して処理する。
30. 完成イメージ
GASを実行すると、新しいスプレッドシート「DL導線一覧」が作成される。
その中に「DL導線」シートが作成され、記事ごとに下記のような確認結果が一覧化される。
確認日時
記事ID
カテゴリ
記事タイトル
URL
PV
余談ブロック数
お仕事ブロック数
その他DL導線数
DLリンク総数
余談ブロック有無
お仕事ブロック有無
DLリンク有無
位置判定
出現率
リンクURL
周辺テキスト
判定
メモ
この一覧により、ダイソー・どこの国などの記事に、無料ダウンロード導線がどの程度設置されているかを確認できる。
また、未設置記事、ブロックはあるがDLリンクがない記事、DLリンクだけがある記事、余談ブロックのみの記事、お仕事ブロックが設置済みの記事を分類できる。
これにより、次にどの記事へLEAD・MIDDLE・SUMMARY導線を追加すべきかを判断しやすくなる。


```



コメント