SUMIF()等で日付の比較するときはシリアル値にしないとダメ
Google SpredSheetでAnalyticsの集計をするときのメモ
アドインで「Google Analytics」を追加。
アドインの機能でデータをシートに展開し、
その展開されたデータをSpredSheetの関数とか使って集計するのだ
ただ、Usersの集計をすると
Google Analytics直で1週間ベースで計算したのと
この方法で集計したのでは値が変わってくる。
どうやらGoogle Analytics直でUsersは、指定した期間内でのUsersになるようで、
1日単位でUsersを出したものを7日分合計したのとは違うみたい。
ネタ元
- https://www.mk-design.co.jp/blog/2018/05/marketing-google-analytic-spreadsheet-report-automation-02
- https://tonari-it.com/gas-analytics-chatwork/
- http://bnbrd.net/automation-by-google-analytics-and-spreadsheet/
- https://tonari-it.com/google-analytics-spreadsheet/
- https://qiita.com/Yamotty/items/41a513fe9592ee0cd11a
- https://digitalidentity.co.jp/blog/analytics/google-analytics/gareporting-with-add-on.html
- https://webtan.impress.co.jp/e/2015/12/15/21593
GASでシートに行を挿入する
これだと9行目の下に挿入
function InsertRowAfter() { var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var objSheet = objSpreadsheet.getActiveSheet(); objSheet.insertRowAfter(9); }
こちらは9行目の上に挿入
objSheet.insertRowBefore(9);
Google Apps Scriptによる配列処理のためのループ
いろいろある。
- 一般的なfor loop
- for (var i = 0; i < 10; i++) {array[i]}
- for in
- for (var i in array) {array[i]}
- while
- while (i < 10) {array[i++]}
- forEach
- array.forEach(function(e){e})
- map, filter
- array.map(function(e){e})
- array.filter(function(e){e})
- Comprehension: GASはJavaScript 1.7を使っていることから、下記のような配列の内包表記を使用することができます。
- [e for each (e in array)]
速度にも違いがあるそう。
GASで列内で特定の値に一致する行番号を取得する
列の内容を配列に取り込んで、
その配列内を検索して場所を調べるという方法になります。
function input_value(){ var key = "え"; var col = "A"; var sh = SpreadsheetApp.getActiveSheet(); var row = get_row(key, col, sh); sh.getRange(row, 2).setValue("ここ") } function get_row(key, col, sh){ var array = get_array(sh, col); var row = array.indexOf(key) + 1; return row; } function get_array(sh, col) { var last_row = sh.getLastRow(); var range = sh.getRange(col + "1:" + col + last_row) var values = range.getValues(); var array = []; for(var i = 0; i < values.length; i++){ array.push(values[i][0]); } return array; }
GASで任意の文字列を含んでいるかどうかを調べる
function myFunction() { var str = ‘柴犬’ //変数strに代入した文字列に「犬」が含まれている場合 if ( str.match(/犬/)) { Browser.msgBox(‘犬です’); } else { Browser.msgBox(‘犬ではありません’); } }
という感じ。
GASでSleep
Utilities.sleep(1000);
GASで繰り返し正規表現でマッチさせる
var myRe = /ab*/g; var str = "abbcdefabh"; var myArray; while ((myArray = myRe.exec(str)) !== null) { var msg = "Found " + myArray[0] + ". "; msg += "Next match starts at " + myRe.lastIndex; console.log(msg); }