画像のリンク切れになっていた過去ページを修正しました。
リンク切れの対象
リンク切れだった画像はGoogleの短縮URLを使て貼り付けたところです。
https://goo.gl/*** という短縮URLです。現在この短縮URLのサービスは終了していますが、リンク先の画像は存在しています。
もちろんブログの記事を作成していた時点では表示されていました。正確な時期は分かりませんが、いつの頃からか表示されなくなってしまったんです。
はてなブログの開発サイドではこれの対策をしていて、先日アナウンスがありました。
Google フォト貼り付け機能を使って貼り付けた画像をはてなフォトライフに移行するページの提供を開始しました - はてなブログ開発ブログ
この対応で直るものと思ってずっとアナウンスを待っていたんです。一年近く。
Googleフォト貼り付け機能を使った画像URLはGoogle短縮URLだったので、単純に僕の日記も対応するものと思ったんです。しかし、ダメでした。直接HTMLタグを付けてブログへ貼っていたためです。
自力で何とかするしかないということです。
検証
× 短縮URLをブログへ貼ると画像は表示されません。
○ 短縮URLをブラウザのアドレスバーへコピペすると画像が表示されます。
○ 短縮URLの元のURLをアドレスバーへコピペしても画像が表示されます。
○ 短縮URLの元のURLをブログに貼り付けても画像が表示されます。
※画像のリンク先はGoogleフォトでも、はてなが提供している はてなフォトライフ でも、Google短縮URLにしているとダメでした。
ということで、短縮URLを元のURLに戻してブログに貼り直すことにしました。
ちなみに、短縮URLというのは長いURLを短縮することで、文字数の制限があるサイト等への貼付けを可能にする、といった目的のものです。
過去に自転車のSNSをやっていた頃に、書き込む日記に文字数制限があり短縮URLを使っていました。SNSの記事と並行してブログを始めたので、ブログにも短縮URLを使っていたんです。
調査
短縮URLを元のURLに戻す(展開する)サイトはいくつも存在しますが、一つずつでは埒があきません。大量に一括で展開できないと。
Googleスプレッドシートで一括して沢山のURLを展開できるスクリプトをなんとか見つけることができました。大感謝 ♪
Googleスプレッドシート上で短縮URLを展開する[Google Apps Script] - あくぽろぐ aqpolog
これを使わせていただいて作成したGoogleスプレッドシートがこちら。
短縮URLを展開 expandURL - Google スプレッドシート
残念ながら短縮URLを含むHTML(または文章)を読み取って、短縮URLだけを展開するものは見つかりませんでした。
ワークフロー
1.はてなブログの全記事をテキストファイルに書き出す(バックアップ機能)
2.1をソートして短縮URL(http://goo.gl/***)だけにする
3.2を上記のGoogleスプレッドシートへ貼り付けて展開する
4.3をエクセルに貼り付けてVLOOKUPの参照先にする
5.リンク切れ画像の編集ページで文章をコピペでエクセルへ貼り、
VLOOKUPで短縮URLを展開した文章に置換する
6.5を編集画面へコピペして完成
エクセルの関数
短縮URLの前後にHTMLタグがついているのでVLOOKUPだけでは置換できません。
条件
その行に文字がある
Yes https://goo.gl が含まれる
Yes URLの前後にあるタグを含めてVLOOKUPして短縮URLを展開
No 元の文字のまま
No 空欄
関数(B1セルを置換する場合)
=IF(""<>B1,IFERROR(LEFT(B1,FIND("""https://goo.gl",B1))&IFERROR(VLOOKUP(MID(B1,FIND("""https://goo.gl",B1)+1,FIND("""",B1,20)-FIND("""https://goo.gl",B1)-1),短縮URLを展開!$A$1:$B$2000,2,FALSE),"")&RIGHT(B1,LEN(B1)-FIND("""",B1,20)+1),B1),"")
Googleスプレッドシートでもできそうなのでアップしました。
短縮URLを展開 ブログ記事 - Google スプレッドシート
[ブログOldNew] シートのB列へブログ記事をコピペすると、C列にURLが展開されて表示されます。
[短縮URLを展開] シートには展開前後のURLを入れて、これを参照させています。
修正
Googleの短縮URLの画像は約2,000ファイルありました。うげ~
対象ページは 2016年夏 ~ 2018年秋 までの凡そ150ページでした。うげげ~
はてなブログから書き出したテキストファイル自体を、上記の処理で置換して はてなブログへ戻す、ということも考えましたが、何かあったら全ておじゃんなのでやめました。1ページずつやりました。
時間は掛かりましたがリンク切れが無くなってスッキリしました (^^)