質問: undefined) { continue; } } //取得したものを列Aに書き込み sheet.getRange(sheet.getLastRow()+1,1).setValue([twiText]); //重複を削除 sheet.getRange(1, 1, sheet.getLastRow(), 1).removeDuplicates(); } // 取得した項目をログに表示 Logger.log(array); Logger.log(twiText); } } ``` ### 試したこと undefined, null, "",などを入れて試したり、.toString()で文字列に変えてみてもうまくいきませんでした。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: "https://api.twitter.com/1.1/users/search.json"というエンドポイントを使っていることから、 ユーザー名に「ブログ」が含まれているユーザーを抽出しようとしている、ということだと理解しました。 > > JSONから試しに["screen_name"]を取ってくると途中までは順調に取得できるのですが、20個取得したあたりから > > TypeError: Cannot read property 'screen_name' of undefined > > のエラーが出て止まってしまいます。 > > > おそらくJSONの構文?が途中で変わるから > > > 違います。 20個取得したあたりでエラーが出て止まるのは、**20個しか取得できていないにもかかわらず、それ以上のインデックスにアクセスし、結果、undefinedに対してscreen_nameプロパティを取得しようとしたから**です。 (arrayの要素はarray[19]が最大なのに、array[20]にアクセスした時点でundefinedが返り、そのundefinedに対してscreen_nameプロパティを取得しようとしたため) 公式のAPIドキュメントに明確に書かれているとおり、ユーザー名検索で取得できるデータの個数は1回のリクエストあたり最大20個です。 なぜ「searchCount = 90」 にされているのか分かりかねますが、APIの仕様として1回のリクエストあたり最大20個しか取得できません。 (ツイート検索と混同されたのでしょうか?またはユーザーではなく、ツイートの検索コードを記載している他サイトのソースを見てドキュメントを確認せずそのままコピペされたのでしょうか?) 20個以上取得したい場合は、ドキュメントにある通り、pageパラメータを都度増やして取得してください。 (なお、この場合もトータルで1000個までしか取得できません) > > それと、何度試しても常に同じ["screen_name"]を取得してしまい、新しく上がってくる最新の情報を取得できていない > > > これも仕様です。上記user searchの公式ドキュメントのページには書かれていませんが、ツイート内容の検索APIの公式ドキュメントによると、 Stanard(無料版)のTwitter search API v1.1においては最新または話題のツイート(recent or popular Tweets)の**インデックス**に対する検索結果を返すとしています。 つまり、検索結果は、インデックスされたものに対する結果のため、一定期間内容が変わらないということです。 ユーザー名検索についても同じことがいえるのでしょう。