###前提・実現したいこと
Google Apps ScriptのUrlFetchApp.fetch でGoogleの検索結果を取得したい。
以下の質問の回答例を作成中にUrlFetchApp.fetchが失敗する現象に遭遇しています。
Google Apps Script(スプレッドシートのスクリプト)にて、site:コマンドでわかるインデックス数を表示したい
UrlFetchApp.fetchが成功した時には上記の質問で実現したいことが実現できるのですが、UrlFetchApp.fetchがに失敗することが多いです。感覚的には1/4の確率でしか成功しません
私自身は特にインデックス数には興味がありませんし、UrlFetchAppも使用しないので特に困っていないのですが、単に興味としてなぜ失敗したり成功したりするのか知りたいです。
###発生している問題・エラーメッセージ
https://www.google.co.jp/search?hl=ja&q=google.com のリクエストに失敗しました(エラー: 503)。サーバー応答の一部: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html DIR="LTR"> <head><meta http-equiv="content-type" content="text/html; charset=...(応答の全文を見るには muteHttpExceptions オプションを使用してください)(行 74、ファイル「コード」)
###該当のソースコード
Spreadsheetのセルから=getDomainIndex("google.com")
と呼ばれることを想定しており、test_getDomainIndex
はスクリプトエディタでのデバッグ用です。
1function test_getDomainIndex() { 2 getDomainIndex('google.com'); 3} 4 5function getDomainIndex(domain) { 6 var response = UrlFetchApp.fetch('https://www.google.co.jp/search?hl=ja&q=site:'+domain); 7 var content = response.getContentText(); 8 var index = content. 9 match(/<div class=\"sd\" id=\"resultStats\"[^0-9]*[0-9\,]+/)[0]. 10 match(/[0-9\,]+/)[0]. 11 replace(/\,/g,""); 12 return index; 13}
インデックス数を取得する処理部分ももう少しスマートにできる気がしますが、それについては元の質問に対して回答してあげてください。
###追加で試したこと
// こちらは失敗しない UrlFetchApp.fetch('https://google.co.jp/'); // こちらは失敗が多い UrlFetchApp.fetch('https://www.google.co.jp/search?hl=ja&q=site:google.com');

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/18 11:54