前提・実現したいこと
GASを使ってTwitterAPIから情報を取得しようとしているのですがうまくいきません。
JSONから試しに["screen_name"]を取ってくると途中までは順調に取得できるのですが、20個取得したあたりから
TypeError: Cannot read property 'screen_name' of undefined
のエラーが出て止まってしまいます。
おそらくJSONの構文?が途中で変わるからだと思いますが詳しくはわからなかったです。
そこでcontinue文を使って、undefinedのエラーが起こった箇所を飛ばしてデータの取得を続けようとしたのですがいくら試してもわからなかったので、アドバイスいただけたらありがたいです。
それと、何度試しても常に同じ["screen_name"]を取得してしまい、新しく上がってくる最新の情報を取得できていないようなのでその点も改善方法を教えていただけたらありがたいです。
よろしくお願いいたします。
twitterのAPIリファレンス=https://developer.twitter.com/en/docs/twitter-api/v1/tweets/search/api-reference/get-search-tweets
該当のソースコード
javascript
1// タイムライン取得用のAPIを起動する関数 2function twitterSearch() { 3 var twitterService = getService(); 4 5 if (twitterService.hasAccess()) { 6 7 //検索キーワード 8 var keyword = "ブログ"; 9 10 //取得するツイート数 デフォルト15-100まで 11 var searchCount = 90; 12 13 14 var twMethod = { method:"GET" }; 15 var json = twitterService.fetch("https://api.twitter.com/1.1/users/search.json?q=" 16 + keyword + "&count=" 17 + searchCount , twMethod); 18 19 // jsonパース 20 var array = JSON.parse(json); 21 22 23 // シート取得 24 var ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId()); 25 var sheet = ss.getSheetByName("twitter-follow"); 26 27 28//Twitterキーワードを繰り返し取得 29 for (var i = 0; i < searchCount; i++){ 30 var twiText = array[i]["screen_name"]; 31 32 if(array[i]["screen_name"] === undefined) 33 { 34 continue; 35} 36} 37 38//取得したものを列Aに書き込み 39 sheet.getRange(sheet.getLastRow()+1,1).setValue([twiText]); 40//重複を削除 41sheet.getRange(1, 1, sheet.getLastRow(), 1).removeDuplicates(); 42 } 43 44 // 取得した項目をログに表示 45 Logger.log(array); 46 Logger.log(twiText); 47 } 48} 49 50
試したこと
undefined, null, "",などを入れて試したり、.toString()で文字列に変えてみてもうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/15 00:02