とりあえず、下のようにコーディングし、実行してみました。

 

function myFunction() {

    let targetUrl = "https://www.google.co.jp/search?q=ameblo"

    let content = UrlFetchApp.fetch(targetUrl).getContentText('UTF-8');

    Logger.log(content);

}

 

すると、エラー発生。

 

429 Too Many Requests
ユーザーが指定された時間内に多くのリクエストを送信した ("rate limiting") ことを示します。

 

UserAgentを偽装してみましたが、解決せず。

どうやらGoogleの規約でスクレイピングは禁止されており、その代わりにAPIが提供されているようです。

 

Google Custom Search API

 

1日あたり100件の検索クエリを無料で提供。

追加のリクエストの費用は、1000クエリあたり5ドル、1日あたり最大10,000クエリ。

 

 

APIキーの取得方法は、こちらを参考にさせて頂きました。

 

 

取得したAPIキーと検索エンジンIDを使用して、以下のURLを叩いてみると、

検索結果のJSONデータが返ってきました!(嬉しい!)

 

https://www.googleapis.com/customsearch/v1?key={APIキー}&cx={検索エンジンID}&q={検索キーワード}

 

 

 

あとはGASで、上記のURLにアクセスしJSONデータを取得します。

 

function myFunction() {

 const key = {APIキー};

 const cx = {検索エンジンID};

 let keyword = {検索キーワード};

 

 let targetUrl = "https://www.googleapis.com/customsearch/v1?" +

        "key=" + key + "&cx=" + cx + "&q=" + keyword;

 

 let json = JSON.parse(UrlFetchApp.fetch(targetUrl).getContentText('UTF-8'));

 

 for(let i = 0; i < json["items"].length; i++){

  Logger.log("タイトル:" + json["items"][i]["title"]);

  Logger.log("URL  :" + json["items"][i]["formattedUrl"]);

 }

}

 

無事Google検索結果を取得できました。