とりあえず、下のようにコーディングし、実行してみました。
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検索結果を取得できました。




