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

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

ただいまの
回答率

90.52%

  • Google Apps Script

    842questions

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

  • スクレイピング

    330questions

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 559

resuzu

score 1

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」を読み取れません。

 該当のソースコード

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var twitter = 'B';
var hasValue = '';
  var url = '';

for(var i=2; i<=77; i++){
    url = sheet.getRange('A'+i).getValue();
    hasValue = sheet.getRange(twitter+i).getValue();
    if(url.match(/http/) && !hasValue){
      var response = UrlFetchApp.fetch(url);
      var content = response.getContentText().replace(/\s+/g, "");
      var myRegexp = /followers"><divclass="statnum">(.*?)<\/div>/i;
      var match = myRegexp.exec(content);
      sheet.getRange(twitter+i).setValue(match[1]);
      Utilities.sleep(100);

    } 
  }    
}

 試したこと

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/09 12:12

    ご教示いただきありがとうございました。
    おかげ様で問題なく動くようになりました。

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

    キャンセル

  • 2018/05/09 17:41

    マイナス評価になっていた(私が付けたのではない)ので私としてもエクスキューズが必要だったのが一つ。

    最初の質問であること、他人が書いたものであるとされていること、正規表現限定で回答を求めているのに、例えばこういう正規表現にしたら取れなかったとか、こういう正規表現だったら違う数値が取れたとかいう試行錯誤の形跡が見えないこと、などがマイナス評価の起因になったと推測します。

    個人的には、回答を自分の勉強だと思っているのであまり気にせず回答しました。規約からすると、"答えそのもの"ではなく、"どうやったら答えが得られるか"の質問をすることが想定されているのではないでしょうか

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Google Apps Script

    842questions

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

  • スクレイピング

    330questions