Google Apps Scriptを使ってスプレッドシートにInstagramのフォロワーの推移をグラフ化させよう

技術


みなさんこんにちは。
いつも当ブログをご覧いただき、ありがとうございます。
今回ご紹介するのは
「Google Apps Script」についてです。

目次

Googleドキュメントについて

みなさんはGoogleドキュメントは使いますか?

僕はPCにMicrosoftのOfficeは入れておりません。
その代わりに「Googleドキュメント」を使用しています。
Officeとの互換性もあるので、「Word形式(.docx)で書類を送って!」と頼まれても対応できちゃうのです。

Googleドキュメントのいいところはまた他の記事で言及しようと思います。

僕がGoogleドキュメントを使う理由の最大の理由が「自動化が簡単にできる」ということです。

「どうやって自動化するのか?」ということなのですが、それが「Google Apps Script」です。
略して「GAS」です。
Googleで検索すると20個目くらいに「大阪ガス」がヒットしてしまいますが、それ見て納得しないでくださいね。

GASとは、簡単にいうと「GoogleのサービスをJavaScriptでもっと便利にカスタマイズできる」というものです。
すでにあるサービスに対してプログラムを書いて、サービス同士を紐付けたり、自動化したりすることができます。

GASについての詳細はまた他の記事で書こうと思います。

仕様

前置きはさて置き、本題に入りましょう。
今回はGASを使ってインスタグラムのフォロワーの推移の記録を自動化したいと思います。

仕様としては、

1行目に表の項目を入力しているので、2行目からデータを自動で入力していく形にします。
A列2行目に「日付」、A列3行目に「フォロワー数」を入力していきます。
今回は日付の降順(上から新しい順)になるようにします。
そのため、2行目に新しく行を追加する必要があるので、その処理も必要ですね。

そして、実際にInstagramのフォロワーを取得するのですが、ここで「スクレイピング」をします。
スクレイピングについてはググっていただけたらたくさん記事が出るので割愛します。
Instagramのプロフィールページにアクセスして、そこからフォロワー数を取得します。
それをスプレッドシートに書き出します。

最後にこれらの処理を定期的に行うことで推移を記録できます。

スクリプト

実際のスクリプトは以下です。

function getFollower() {

  var SSId = '{スプレッドシートのID}'; //スプレッドシートのID

  var mySS = SpreadsheetApp.openById(SSId); //IDでスプレッドシートを開く

  var sheetName = "{シート名}"; //{シート名}に好きなシートの名前

  var sheet = mySS.getSheetByName(sheetName)

  //日付
  var date = new Date();
  var today = Utilities.formatDate(date, 'Tokyo/Asia', 'yyyy/MM/dd');

  //2行目に新しい行を追加
  sheet.insertRows(2, 1);

  //A2に今日の日付を追加
  sheet.getRange(2, 1).setValue(today);

  var url = 'https://www.instagram.com/{ユーザー名}/'; //{ユーザー名}のところに任意のユーザー名を入れてください
  var response = UrlFetchApp.fetch(url); //URLから情報を取得
  var html = response.getContentText('UTF-8'); //その情報を文字列に変換
  var json = html.match(/window._sharedData = (.*?);<\/script>/)[1]; //文字列に変換したものの中から該当のコードを検索
  var jsonData = JSON.parse(json); //それをJSONに変換
  var followers = jsonData['entry_data']['ProfilePage'][0]['graphql']['user']['edge_followed_by']['count']; //jsonDataから取得したいデータを取ってきます。

  sheet.getRange(2,2).setValue(followers);

}

以上で終了です。

定期的に自動取得したい時にはスクリプトから「トリガー選択」をして、一定時間おきにそのスクリプトが実行されるようにします。

僕は1日に一回自動取得してそれをグラフ化しています。
実際に動いているものを載せておきますね。

タイトルとURLをコピーしました