制作記事 Web制作アプリケーションGoogle Apps ScriptGoogle Apps Scriptで動的なWebページの情報を取得したい → PhantomJsCloud

Google Apps Scriptで動的なWebページの情報を取得したい → PhantomJsCloud

Google Apps Script では、JavaScriptで読み込み準備後にコンテンツを生成するような動的なWebページの情報を取得することはできない。そのため、レンダリング後の情報を取得するために、PhantomJsCloud という外部ツールを利用する。無料版と有償版があるが、1日500ページのアクセスまでは無料となる。
ぼくの場合は無料版で十分なので早速利用してみる。

PhontomJsCloud

  1. 「Sign up now!」ボタンをクリックする
  2. メールアドレスでアカウントを作成する
  3. メールアドレス宛てにPhontomJsCloudからメールが届く
  4. メールの中のメールアドレス確認用リンクをクリックする
  5. パスワードを任意に決めて、「Finish and Log in」をクリックする
  6. ApiKeyが発行されるので、メモしておく

ApiKeyはスクリプト側で必要となるのでコピーしておく。

/**
 * 動的ページのレンダリング後の情報を取得する
 * 
 * @param {string} URL
 * @return {string} URLのソースコード
 */
function phantomJSCloud(URL) {
  const key = 'xxxxxxxxxxxxxxxxxxxxxxxxx';    // 取得したApiKeyをセットする

  // HTTPSレスポンスのオプション項目を設定する
  let option = {
        url: URL,
        renderType: 'HTML',
        outputAsJson: true
      };

  // オプション項目をJSONにしてエンコードする
  let payload = JSON.stringify(option);

  payload = encodeURIComponent(payload);

  // PhantomJsCloudへリクエストするURLを設定して、ソースコードを取得する
  let apiUrl = "https://phantomjscloud.com/api/browser/v2/"+ key +"/?request=" + payload,
      response = UrlFetchApp.fetch(apiUrl),
      json = JSON.parse(response.getContentText()),
      source = json["content"]["data"];

  return source;
}