質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google Apps Script

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

Q&A

解決済

1回答

483閲覧

Google App ScriptでTwitterのフォロワー数を取得したい

resuzu

総合スコア7

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Google Apps Script

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

0グッド

2クリップ

投稿2018/04/25 11:02

編集2018/05/02 01:31

Google App ScriptでTwitterのフォロワー数を取得したい

プログラミングは超初心者です。よろしくお願いします。

スプレッドシートのA列に多数のTwitterアカウントのURL(例 https://twitter.com/itmedia、https://twitter.com/nikkei、https://twitter.com/uniqlo_jp など)が入っています。
A列のURLのTwitterアカウントのフォロワー数をB列に取得したいです。

以前、前任者が作成したスクリプトを使用していたのですが、Twitterのソースが変更になったようで、取得できなくなってしまいました。

発生している問題・エラーメッセージ

TypeError: null からプロパティ「1」を読み取れません。

該当のソースコード

JavaScript

1function myFunction() { 2 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 3 4 var twitter = 'B'; 5var hasValue = ''; 6 var url = ''; 7 8for(var i=2; i<=77; i++){ 9 url = sheet.getRange('A'+i).getValue(); 10 hasValue = sheet.getRange(twitter+i).getValue(); 11 if(url.match(/http/) && !hasValue){ 12 var response = UrlFetchApp.fetch(url); 13 var content = response.getContentText().replace(/\s+/g, ""); 14 var myRegexp = /followers"><divclass="statnum">(.*?)</div>/i; 15 var match = myRegexp.exec(content); 16 sheet.getRange(twitter+i).setValue(match[1]); 17 Utilities.sleep(100); 18 19 } 20 } 21}

試したこと

Twitterのソースを見て<li class="ProfileNav-item ProfileNav-item--followers">の中のaタグの中の<span class="ProfileNav-value" data-count= の値を取ればいいことは分かっているのですが、この部分をどのように正規表現で指定すればいいのかが分かりません。

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

「var myRegexp」ではじまる一行を消して、下記にしてください。

javascript

1var myRegexp = /<spanclass="ProfileNav-label"aria-hidden="true">Followers</span><spanclass="u-hiddenVisually">Followers</span><spanclass="ProfileNav-value"data-count=([\d]+?)data/i;

なお、丸投げは規約違反です。どうすべきか分かりますね?

投稿2018/05/02 16:23

papinianus

総合スコア12705

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

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

resuzu

2018/05/09 03:12

ご教示いただきありがとうございました。 おかげ様で問題なく動くようになりました。 [丸投げ」の件、大変失礼いたしました。 記載できる状況は書き込んだつもりだったのですが、自分で修正してエラーになってしまった文を書けばよかったのでしょうか・・・。
papinianus

2018/05/09 08:41

マイナス評価になっていた(私が付けたのではない)ので私としてもエクスキューズが必要だったのが一つ。 最初の質問であること、他人が書いたものであるとされていること、正規表現限定で回答を求めているのに、例えばこういう正規表現にしたら取れなかったとか、こういう正規表現だったら違う数値が取れたとかいう試行錯誤の形跡が見えないこと、などがマイナス評価の起因になったと推測します。 個人的には、回答を自分の勉強だと思っているのであまり気にせず回答しました。規約からすると、"答えそのもの"ではなく、"どうやったら答えが得られるか"の質問をすることが想定されているのではないでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問