その他最近のコメント 1. 2015/03/05 「Google Apps Script > カレンダーから指定した日付以降のイベントリストを得る」 [この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]
例えば、今年一年のGoogle Calendarのイベントリストを得るスクリプト。 手始めとして https://script.google.com/ で、Calendar系のAPIをONにして走らせてみて下さい。
これだけだと開始・終了日時とイベントリストを得るだけですが、そこをベースに例えば日時と組み合わせた何かしらのレポートを作ったり、アクションを起こさせたりするものを作る際にベースにできます。 つまり結果としてGoogle CalendarをGoogle APIを叩いて実現出来る各種アクションの制御センターにする事もできます。 何かをさせたいという時には、Google Calendarにイベントを作成、そうするとその日時に自動的にそれが実行されるといった。 その為の基本となるスクリプトとしてお使い下さい。 結果は、表示→ログで確認。
なお、自分の場合は、ここから、指定したイベントについて、どの期間で行われていたのかを調べて、それを別の履歴とくっつかせて、成果レポートとしてまとめる、といった用途で考えてます。
function run(){ // ここに範囲の開始日時をセット var start_time = '2015/01/01 00:00:00'; listEvents(start_time); }
function listEvents(start_time) { var calendarId = 'primary'; var start_time_obj = new Date(start_time); var events = Calendar.Events.list(calendarId, { timeMin: start_time_obj.toISOString(), singleEvents: true, orderBy: 'startTime' }); if (events.items && events.items.length > 0) { for (var i = 0; i < events.items.length; i++) { var event = events.items[i]; if (event.start.date) { var start = parseDate(event.start.date); var end = parseDate(event.end.date); var end_obj = new Date(end); end_obj.setTime(end_obj.getTime()-1); Logger.log('%s-%s %s', toLocaleDate(new Date(start)), toLocaleDate(end_obj), event.summary); } else { Logger.log('?-? %s', event.summary); } } } else { Logger.log('No events found.'); } }
function parseDate(string) { var parts = string.split('T'); parts[0] = parts[0].replace(/-/g, '/'); return new Date(parts.join(' ')); }
function toLocaleDate( date ){ var year = date.getFullYear(); var mon = date.getMonth() + 1; var mday = date.getDate() + ''; mon += ''; if(mon.length < 2){ mon = '0' + mon; } if(mday.length < 2){ mday = '0' + mday; } return year + '/' + mon + '/' + mday; } |
2. 2015/02/10 「Google Apps Script > Google AnalyticsのUU数をGoogle SpreadsheetにApps Scriptで自動記録」 [この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]
1. 文章目的 2. 昨日分のユニークユーザー数を新たに作るスプレッドシートに記録するGoogle Apps Script 3. 選択しているスプレッドシートに、UU、PV、PV/UU、直帰率、平均滞在時間を書き込むGoogle Apps Script 4. スクリプトエディターを立ち上げないで実行できるようにする
1.
文章目的
Google Analyticsの昨日のユニークユーザーを得て、Google Spreadsheetに入れ込む、といったGoogle Apps Script例が見つからなかったので自分で作ってみた。 面倒な作業は自動化するに限る、という事で、これで人生の無駄が一つ減り、人生がその分クリエティヴな輝きを取り戻す事が可能になります。 手動の作業を残していたら、今の時代ドンドン遅れてしまいますからね。
ここまで出来れば、後は必要に応じて必要な部分を部分部分で取り込んで、KPI作成とかに使えると思います。 つまりは、この位の事は、この位の記述で出来るというデモみたいなものですね。
Analytics APIとかをGoogle Developer Console https://console.developers.google.com/ でONにしてから、 http://www.google.com/script/start/ から動かしてますが、Spreadsheetのツール→スクリプトエディターの方に組み込んで動かすのもありでしょう(基本そっちかな/そちらの例も作ってあります)。
2.
昨日分のユニークユーザー数を新たに作るスプレッドシートに記録するGoogle Apps Script
profile_idは自分のGoogle AnalyticsのURLから取得して下さい。 https://www.google.com/analytics/web/?hl=ja&pli=1#report/visitors-overview/a103300w120308p96186554/ といった、末尾の数字の部分に該当します。 これはスクリプトエディターから動かします。 このスクリプトを動かすと、Google Docsのスプレッドシートリストに、新たなスプレッドシートが出来、そしてそこに昨日のGAのユニークユーザーすが入っている事が確認出来ます。
function run() { var profile_id = 96186554; /* end of analytics url's number */ record_yesterday_statics(profile_id); }
function record_yesterday_statics(profileId) { var today = new Date(); var yesterday = new Date(today.getFullYear()+'/'+(today.getMonth() + 1)+'/'+today.getDate()); yesterday.setDate(yesterday.getDate() - 1); var yesterday_str = yesterday.getFullYear()+'/'+(yesterday.getMonth() + 1)+'/'+yesterday.getDate() var startDate = Utilities.formatDate(yesterday, Session.getTimeZone(), 'yyyy-MM-dd'); var endDate = Utilities.formatDate(yesterday, Session.getTimeZone(), 'yyyy-MM-dd');
var tableId = 'ga:' + profileId; var metric = 'ga:users'; var options = {}; /*{ 'dimensions': 'ga:source,ga:keyword', 'sort': '-ga:visits,ga:source', 'filters': 'ga:medium==organic', 'max-results': 25 };*/ var report = Analytics.Data.Ga.get(tableId, startDate, endDate, metric, options);
if (report.rows) { var spreadsheet = SpreadsheetApp.create('Unique users'); var sheet = spreadsheet.getActiveSheet();
// Append the headers. var headers = report.columnHeaders.map(function(columnHeader) { return columnHeader.name; }); // sheet.appendRow(headers);
// Append the results. sheet.getRange(1, 1).setValue(yesterday_str); sheet.getRange(1, 2, report.rows.length, headers.length) .setValues(report.rows);
Logger.log('Report spreadsheet created: %s', spreadsheet.getUrl()); } else { Logger.log('No rows returned.'); } } |
3.
選択しているスプレッドシートに、UU、PV、PV/UU、直帰率、平均滞在時間を書き込むGoogle Apps Script
上は技術的にこう書けば出来るんだなという検証として、こちらが実用用途に拡張した本命。 profile_id は上で説明したようにGoogle AnalyticsのURLの末尾の数字のところから取って、 start_date_str の値は自分が測りたいデータが始まる日を入れて下さい。
なお、GAで採りたい項目は https://developers.google.com/analytics/devguides/reporting/core/dimsmets#cats=user,session,traffic_sources,adwords を参考に、変数var metrics='....';の中にコンマ繋がりで追加すれば拡張する事が出来ます。
使い方は、自分がKPI管理とかに使っているGoogle Spreadsheetを開いて、既存データーを不注意に上書きしないように、 とりあえずはどこに値が入ってくるのか作動を見る為に値を入れる用の空のシートを開いて、 上メニューから、ツール→スクリプトエディター と移動して、そこに下記スクリプトを貼付けて、変数を調整して、run()関数を選んで、実行!
function run() { var start_date_str = "2015/01/12"; var profile_id = 96186554; /* end of analytics url's number */ record_uu(profile_id, start_date_str); }
function toDoubleDigits(num) { num += ""; if (num.length === 1) { num = "0" + num; } return num; }
function record_uu(profileId, start_date_str) { var start_date = new Date(start_date_str); var today = new Date(); var yesterday = new Date(today.getFullYear()+'/'+(today.getMonth() + 1)+'/'+today.getDate()); yesterday.setDate(yesterday.getDate() - 1); var yesterday_str = yesterday.getFullYear()+'/'+(yesterday.getMonth() + 1)+'/'+yesterday.getDate();
var date_cursor = yesterday; var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getActiveSheet();
var line_num = 0; line_num++; var item_names = new Array("Date", "UU", "PV", "PV/UU", "Bounce Rate", "Avg Load Time"); var tableId = 'ga:' + profileId; var metric = 'ga:users,ga:pageviews,ga:bounceRate,ga:avgPageLoadTime'; var options = { 'dimensions': 'ga:date', 'sort': '-ga:date', }; var item_loc = 0; for each (var item_name in item_names){ item_loc++; sheet.getRange(line_num, item_loc).setValue(item_name); } var in_startDate = Utilities.formatDate(date_cursor, Session.getTimeZone(), start_date.getFullYear() +'-'+toDoubleDigits(start_date.getMonth()+1) +"-"+toDoubleDigits(start_date.getDate()) ); var in_endDate = Utilities.formatDate(date_cursor, Session.getTimeZone(),yesterday.getFullYear() +'-'+toDoubleDigits((yesterday.getMonth() + 1)) +'-'+toDoubleDigits(yesterday.getDate()));
line_num++;
var report = Analytics.Data.Ga.get(tableId, in_startDate, in_endDate, metric, options);
if (report.rows) { for(var i =0;i < report.rows.length;i++){ var in_date_str = report.rows[i][0]; var uu = report.rows[i][1]; var pv = report.rows[i][2]; var bounce_rate = report.rows[i][3]; var avg_load_time = report.rows[i][4]; var pv_uu = 0; if(uu && pv){ pv_uu = (pv/uu).toFixed(2); } var loc_num = 0; loc_num++; sheet.getRange(line_num, loc_num).setValue(in_date_str.substr(0,4)+'/'+in_date_str.substr(4,2)+'/'+in_date_str.substr(6,2)); loc_num++; sheet.getRange(line_num, loc_num).setValue(uu); loc_num++; sheet.getRange(line_num, loc_num).setValue(pv); loc_num++; sheet.getRange(line_num, loc_num).setValue(pv_uu); loc_num++; sheet.getRange(line_num, loc_num).setValue(bounce_rate);
loc_num++; sheet.getRange(line_num, loc_num).setValue(avg_load_time); line_num++; } } } |
4.
スクリプトエディターを立ち上げないで実行できるようにする
function onOpen(){ showMenu(); }
function showMenu() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var menu = [ {name: "GAデータ取得", functionName: "run"} ]; ss.addMenu("追加メニュー", menu); } |
を追加記述して保存し、showMenu()を選んで実行すると、そのシートに「追加メニュー」という項目が追加されていて、使えるようになる。
メニューの追加についてはdotinstallに該当する講座があるので http://dotinstall.com/lessons/basic_google_apps_script/24310 http://dotinstall.com/lessons/basic_google_apps_script/24311 それを見れば画面の動きも分かるかと。
なお、メニューから実行どころか、立ち上げたらいきなり実行させたいのなら、
と書けば良い。
|