ふきげん猫ちび
ふきげん猫ちび
ふきげん猫ちび
このような方に向けて、今日はGoogle Apps Scriptの概要を説明します。
- Google App Scriptとは?
- こんな人におすすめ
- Google Apps Scriptで出来ること
- Google App Scriptの始め方
僕の中ではGoogle Apps Scriptを使いこなせる人はすべて自動的に尊敬しています。
それくらい、使えると便利なツールです。
ヘイショー
目次
Google App Scriptとは?
Google Apps Script(グーグルあぷスクリプト)は、Googleが開発したJavaScriptベースのプログラミング言語です。
主にGoogle系サービスを簡単に自動化するために使います。
ヘイショー
ヘイショー
こんな人におすすめ
Google App Scriptはプログラミング言語ですが、その汎用性の高さからすべての会社員にお勧めできます。
ヘイショー
僕は一度だけGASを使いこなす方と一緒に仕事をさせていただいたことがあるのですが、会社員として初めて「この人には叶わないな」と思わされました。
それくらいパワフルなツールです。
Google App Scriptの始め方
基礎を一から学びたいという方は上記の動画をおすすめします。
一方で、スクリプトの走らせ方だけを覚えておいて後はテンプレを活用していきたいという方は以下の記事をご覧ください。
関連記事 GAS(Google App Script)のスクリプトを走らせる方法
ヘイショー
Google Apps Scriptで出来ること
いろいろ出来るのですが、自分が認識しているところでは以下の通りです。
- マニュアル作業を自動化させる
- Webページからテキストなどを抽出する
- Google系のサービスでカバーされていない内容を実装する
ヘイショー
Twitterのフォロワー数を定期的に数える
Twitterでフォロワー数の推移を毎週、または毎月記録することが出来ます。
関連記事 Google App Script(GAS)でTwitterのフォロワー数を自動で数える方法
スクレイピング
Webサイトの各ページのメタタイトル、メタディスクリプション、H1タグなどを抽出してGoogleスプレッドシートに記録していくことが出来ます。
関連記事 Google App Script(GAS)でWebサイト情報をスクレイピングするテンプレ
その他
個人的によく利用しているのは以下のスクリプトです。
- webpagetestと組み合わせて、Webサイトの複数のページのパフォーマンスを測定する
- Googleスプレッドシート上で、ボタンをクリックすることで全部のグループを開閉させる
ヘイショー
スクリプトを走らせる方法
GASのスクリプトの走らせ方をSTEP by STEPで丁寧に解説していきます。
ヘイショー
スクリプトを自分でスクラッチから書くのは難易度が高いですが、スクリプトの走らせ方さえ知っていればググって公開されているものを利用することが出来るようになります。
ヘイショー
STEP 1. Googleスプレッドシートを開く
「ツール」→「スクリプトエディタ」をクリックすると、GASの新規ファイル作成のページへジャンプします。
STEP 2. App Scriptファイルを開く
これがApp Scriptのファイル編集画面です。
プロジェクト名とファイル名を、適当な名前に変更します。
STEP 3. スクリプトを書いて保存する
スクリプトを書いたら、ファイルのアイコンをクリックして保存します。
次に「実行」というボタンをクリックすると、スクリプトが正しく動くかどうかを確認してくれます。
今回はサンプルとして、URLから一括でメタタイトルとメタディスクリプションを取得するコードを使います。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getDataRange().getValues();
try {
for (var i = 1; i < values.length; i++) { // 1行目は説明行なので2行目であるkey1から開始
checkTitleDescription(sheet, values[i], i);
}
} catch (e) {
Browser.msgBox(e);
}
}
function checkTitleDescription(sheet, value, i) {
var response = UrlFetchApp.fetch(value[0]); // 一番左のセルにURLの値が入っている
var text = response.getContentText();
var titleMatch = text.match(/<title>([\s\S]*)<\/title>/i);
var title = getFirstValue(titleMatch);
var descMatch = text.match(/meta\s+name=['"]description['"]\s+content=['"](.+)['"]/i);
var description = getFirstValue(descMatch);
var h1Match = text.match(/<h1.+?>([\s\S]*)<\/h1>/i);
var h1 = getFirstValue(h1Match);
sheet.getRange(i + 1, 2, 1, 3).setValues([[title, description, h1]]);
}
// マッチする最初の要素を返す
function getFirstValue(values) {
return values && values.length > 1 ? values[1] : '';
}
STEP 4. アカウント認証をする
スクリプトを走らせるには、自分のGoogleアカウントと紐付ける必要があります。
STEP 5. スクリプトが動いていることを確認する
認証が終わったら、下の「実行ログ」というウィンドウに結果が表示されます。
問題が無ければ、右上の「デプロイ→新しいデプロイ」というリンクをクリックします。
ヘイショー
STEP 6. デプロイする
デプロイ→新しいデプロイのリンクをクリックすると、上記のようなポップアップウィンドウが表示されます。
「種類の選択」の右にある歯車のアイコンをクリックして「ウェブアプリ」を選択します。
説明文を適当に入力して、デプロイします。
ヘイショー
STEP 7. 動作を確認する
今回サンプルで提供したスクリプトは、「A2行目以降のURLに対して、メタタイトルとメタディスクリプションを表示させる」というものでした。
なのでA2より以下に対象とするURLを入れます。
次に、先ほどのスクリプトファイルに戻って、「実行」をクリックします。
下に「実行ログ」で実行完了と表示されたら、Googleシートに戻ります。
ヘイショー
Webサイト情報をスクレイピングする方法
メタタイトルとメタディスクリプションを抽出する方法です。
用意するもの
まずはこんな感じで、Googleスプレッドシートに1列目に抽出したい項目を、A列にURLを羅列してください。
シート名は「Scraping」と命名ください。
メタタイトルとメタディスクリプション
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("Scraping");
var values = sheet.getDataRange().getValues();
try {
for (var i = 1; i < values.length; i++) {
checkTitleDescription(sheet, values[i], i);
}
} catch (e) {
Browser.msgBox(e);
}
}
function checkTitleDescription(sheet, value, i) {
var response = UrlFetchApp.fetch(value[0]);
var text = response.getContentText();
var titleMatch = text.match(/<title>([\s\S]*)<\/title>/i);
var title = getFirstValue(titleMatch);
var descMatch = text.match(/meta\s+name=['"]description['"]\s+content=['"](.+)['"]/i);
var description = getFirstValue(descMatch);
sheet.getRange(i + 1, 2, 1, 2).setValues([[title, description]]);
}
function getFirstValue(values) {
return values && values.length > 1 ? values[1] : '';
}
ヘイショー
メタタイトル/ディスクリプション+H1タグも一緒に抽出する
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("Scraping");
var values = sheet.getDataRange().getValues();
try {
for (var i = 1; i < values.length; i++) {
checkTitleDescription(sheet, values[i], i);
}
} catch (e) {
Browser.msgBox(e);
}
}
function checkTitleDescription(sheet, value, i) {
var response = UrlFetchApp.fetch(value[0]);
var text = response.getContentText();
var titleMatch = text.match(/<title>([\s\S]*)<\/title>/i);
var title = getFirstValue(titleMatch);
var descMatch = text.match(/meta\s+name=['"]description['"]\s+content=['"](.+)['"]/i);
var description = getFirstValue(descMatch);
var h1Match = text.match(/<h1.+?>([\s\S]*)<\/h1>/i);
var h1 = getFirstValue(h1Match);
sheet.getRange(i + 1, 2, 1, 3).setValues([[title, description, h1]]);
}
function getFirstValue(values) {
return values && values.length > 1 ? values[1] : '';
}
Twitterのフォロワー数を自動で数える方法
ここからは実装方法をレクチャーします。
機能は以下の通り。
- 毎日 or 週毎 or 月毎でTwitterのフォロワー数をGoogleスプレッドシートに記録する
- 複数のアカウント対象
- Googleスプレッドシートでシートを指定する
ヘイショー
完成した表はこんな感じです
GASのソースコード
Twitterの各アカウントのフォロワー数を数えるためのスクリプトはこちら。
function TwitterFollowers() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//Google Spreadsheetのシート名を記入
var sheet = spreadsheet.getSheetByName("★Google Sheetのシート名★");
var today = Utilities.formatDate(new Date(), "JST","yyyy/MM/dd")
var lastRow = sheet.getLastRow()
var row = lastRow + 1;
//★アカウント1~3★のところに自分のTwitter IDを入れる
var result1 = getTwitterNumFollowersJson("★アカウント1★");
var result2 = getTwitterNumFollowersJson("★アカウント2★");
var result3 = getTwitterNumFollowersJson("★アカウント3★");
//入力
sheet.getRange(row, 1).setValue(today);
sheet.getRange(row, 2).setValue(result1.followers_count);
sheet.getRange(row, 3).setValue(result2.followers_count);
sheet.getRange(row, 4).setValue(result3.followers_count);
}
function getTwitterNumFollowersJson(screenName) {
var baseURL = "https://cdn.syndication.twimg.com/widgets/followbutton/info.json?screen_names=";
var response = UrlFetchApp.fetch(baseURL + screenName);
var result = null;
if (response.getResponseCode() == 200) {
var text = response.getContentText("utf-8");
if (text != "") {
var data = JSON.parse(text);
if (data.length == 1) {
result = data[0];
}
}
}
return result;
}
function getNumFollowers(screenName) {
var result = getTwitterNumFollowersJson(screenName);
if (result) {
return result.followers_count;
} else {
return 0; // Not Found;
}
}
定期的にスクリプトを走らせるためのトリガーを設定
スクリプトを毎週自動で走らせるために、トリガーを設定します。
- Extentions → Apps Script
- 左のサイドバーから「Triggers」を選択
- 右下の「+ Add Trigger」をクリック
- ポップアップで「TwitterFollowers」「Head」「Time-driven」「Week timer」「曜日を選択」「時間を選択」を選択して、最後に「Save」をクリックすれば完了です。
まとめ
自分もまだまだ勉強中ですが、これからも学んだ内容をこのブログにアップしていきたいと思います。
ヘイショー
それでは、ご精読ありがとうございました。