🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

5077閲覧

【GAS】UserAgentを変更してfetchする方法

w_k31

総合スコア13

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2019/10/29 02:39

起きている問題

正しい値を引っ張ってこなくなりました。
自分の中で調べてみた感じだとUserAgentを変更しないといけないという結論に至りました。

▼使用してたコード
"F7:F110"にはfetchしたいURLを予め置いてます。

GAS

1function test() { 2 var spreadsheetObj = SpreadsheetApp.getActiveSpreadsheet(); 3 var sheet = spreadsheetObj.getSheetByName("シート1"); 4 var LOGIN_URLS = sheet.getRange("F7:F110").getValues(); 5 6 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 7 var sheet2 = spreadsheet.getSheetByName("シート2"); 8 9 for (var i = 0; i < LOGIN_URLS.length; i++){ 10 var lastrow = sheet2.getLastRow(); 11 var responses = UrlFetchApp.fetch(LOGIN_URLS[i]); 12 var data = responses.getContentText(); 13 var csv = Utilities.parseCsv(data); 14 sheet2.getRange(lastrow+1, 1, csv.length, csv[0].length).setValues(csv); 15 16} 17}

▼エラーで返ってくる

ReturnError

1<html dir="ltr"><head><style> 2html { 3 font-family: "Helvetica Neue" 4} 5 6body { 7 font-size: 12px; 8 margin: 0; 9 padding: 0; 10 height: 100%; 11} 12 13a { 14 text-decoration: none; 15 color: inherit; 16 cursor: pointer; 17} 18 19h1 { 20 margin-left: 30px; 21} 22 23.nav { 24 width: 100%; 25 border-bottom: 1px solid #ccc; 26 border-collapse: collapse; 27 font-size: 13.33px; 28} 29 30.nav td { 31 padding: 0; 32} 33 34.nav .navText { 35 color: #00c; 36 display: inline-block; 37 padding: 9px 12px; 38} 39 40.nav .navText .selected { 41 color: #000; 42 font-weight: bold; 43 text-decoration: none; 44} 45 46.body { 47 background: #eee; 48 color: #000; 49 font-size: 13px; 50 font-weight: bold; 51 margin: 40px 100px; 52 padding: 30px; 53} 54 55.body a { 56 color: #00c; 57 text-decoration: underline; 58} 59 60.footer { 61 color: gray; 62 margin: 100px 0 0 0; 63 padding: 10px; 64 width: 98%; 65 bottom: 0; 66} 67 68.footer a { 69 color: #77c; 70} 71 72.footer .right { 73 float: right; 74} 75</style></head><body><table class="nav"><tbody><tr><td><div><span class="navText"><a href="https://www.indeed.com">Find Jobs</a></span><span class="navText"><a href="https://www.indeed.com/resumes">Find Resumes</a></span><span class="navText"><a href="https://ads.indeed.com/job/ads">Employers</a></span><span class="navText"><a href="/" class="selected">Analytics</a></span></div></td></tr></tbody></table><h1>Indeed Analytics (beta)</h1><div class="body"><p>It seems like you’re using an older version of your browser. For the best experience 76function unsupportedAccessCookie() { 77 var date = new Date(); 78 date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000)); 79 document.cookie = "unsupportedAccess=1;expires=" + date.toUTCString() + ";path=/"; 80} 81</script></body></html>

▼本来返ってくる値
該当企業の広告運用の当月データ

試したこと

UserAgentを変更してみました。

function test() { var spreadsheetObj = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheetObj.getSheetByName("シート1"); var LOGIN_URLS = sheet.getRange("F7:F110").getValues(); var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet2 = spreadsheet.getSheetByName("シート2"); var postheader = { "useragent":"Mozilla/5.0", "accept":"gzip" } var parameters = { "method":"get", "muteHttpExceptions": true, "headers": postheader } for (var i = 0; i < LOGIN_URLS.length; i++){ var lastrow = sheet2.getLastRow(); var responses = UrlFetchApp.fetch(LOGIN_URLS[i],parameters); var data = responses.getContentText(); var csv = Utilities.parseCsv(data); sheet2.getRange(lastrow+1, 1, csv.length, csv[0].length).setValues(csv); } }

返ってくる結果は同じだったので、失敗でした。

知りたいこと

UserAgentを変更してfetchする方法になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

結論として、無理です。

参考:GASでクローラ作る際に使った機能

そのpostheaderでは単に"useragent"というヘッダがつくだけで、"User-Agent"は"Mozilla/5.0 (compatible; Google-Apps-Script)"のままでした。
またコードを変更して、

javascript

1 var postheader = { 2 "User-Agent":"Mozilla/5.0", 3 "accept":"gzip" 4 }

としても、"User-Agent": "Mozilla/5.0 (compatible; Google-Apps-Script)"で送信されました。

投稿2019/10/29 14:42

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

w_k31

2019/11/01 03:04

>>papinianus そうなんですね・・。 一つずつポチポチ押すと時間が掛かるので、スプレッドシート内のマクロか、代案を模索しないといけないってことですね。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問