1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Webページの画像ファイルを一括取得してGoogleDriveに格納(GoogleAppsScript)

Posted at

はじめに

妻がlivedoorblogに掲載していたブログをWordpressのサーバに移行しようとしてたのだが、livedoorblogには画像ファイルの一括エクスポート機能がない(それも問題な気がするが)とのことで、一肌脱ぐことに。

なお、一括取得するシェアソフトは存在するものほぼwindows用であり、私のメインPCがchromebookだったので、ため、GoogleAppScriptで一括取得する機能を作成しました。

作成した機能

ブログ記事のURLの一覧はlivedoorblogのエクスポートで取得可能だったので、その各ブログ記事に貼り付けている画像ファイルをGoogleDriveに一括格納する機能となっています。

画像ファイルのURLのみ判断して、かつ切り出す処理には、正規表現を使っています。(今回の機能を作る中で、正規表現の使い方がすごく勉強になりました)

また、htmlファイルに記載されている画像ファイルのURLには、自分で添付した画像ファイル以外の、他の記事のサムネイルや、livedoor自体のロゴ画像が含まれているので、URLの命名規則から不要なものは除外するようにしています。

実際のコード

GoogleスプレッドシートのA列にブログ記事のURLを貼り付けた上で、以下のスクリプトを実行

//スプレッドシートに記載したブログページのURLから画像を取得
function downloadImages() {
  
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("A1:A");
  var row = sheet.getLastRow();

  
  for (i=1; i<row+1; i++){
    //  シートから1行ずつブログ記事のURLを取得
    url = range.getCell(i, 1).getValue();
    
    var response = UrlFetchApp.fetch(url);
    var html = response.getContentText('UTF-8');
    
    //    取得したHTMLから正規表現でimgタグのsrc属性を取得
    //    img src=""内の画像URLを、()指定で切り出す
    var reg = /<img.*?src=\"(.*?)\".*?>/g;

    while ( m = reg.exec(html)){
      //  正規表現にマッチして、かつ()指定で切り出した画像URLはm[1]に格納されている
      var image_url = m [1];
      //  取得したい画像のURLは"https://livedoor.blogimg.jp〜”なので
      if (image_url.slice(0,27) === "https://livedoor.blogimg.jp"){
        var res = UrlFetchApp.fetch(image_url);
        var image = res.getBlob();
        
        //  取得したimageをGoogle Driveにアップロード
        var file = DriveApp.createFile(image);
      }
    }
  }
}

参考にしたサイト

.exec() | JavaScript 日本語リファレンス | js STUDIO

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?