前回はGoogleスプレッドシートの設定をしました。今回は「Google Apps Script(GAS)の設定」です。
GASに関しては全面的に@daichan4649 さんに作成いただきました。
本当に本当にありがとうございましたぁあ!!(土下座)
というわけで、「Google Apps Script(GAS)の設定」について手順をメモ。
Google Apps Script(GAS)とは?
今回はこのGASで「GoogleスプレットシードにGoogleアナリティクスから自動で書き出すデイリーレポートをJSON形式で出力する」というプログラムを作成していただきました。
Google Apps Script(GAS)の設定
前回作成したGoogleスプレッドシートを開きます。
メニュー部の「ツール」→「スクリプトエディタ」をクリック
このような画面が開きます。
上部の「無題のプロジェクト」をクリックし、赤枠内に入力。
わかりやすい名前がオススメ。
赤枠内に以下のコードの上部2カ所(URL_BOOK、SHEET_NAME)を書き換えてコピペ。
var URL_BOOK = 'https://docs.google.com/spreadsheets/d/[スプレッドシートのID]/edit?usp=sharing'; var SHEET_NAME = '[GoogleスプレッドシートのReportName]'; var ROW_NUM_TITLE = 15; // タイトル行(jsonの'key') function doGet(e) { var json = createJson(); Logger.log(json); return ContentService.createTextOutput(JSON.stringify(json)) .setMimeType(ContentService.MimeType.JSON); } function createJson() { var url = URL_BOOK; var sheetName = SHEET_NAME; var book = SpreadsheetApp.openByUrl(url); var sheet = book.getSheetByName(sheetName); var json = convertSheet2Json(sheet); Logger.log(json); return json; } function convertSheet2Json(sheet) { // title var rowNum = ROW_NUM_TITLE; var firstRange = sheet.getRange(rowNum, 1, rowNum, sheet.getLastColumn()); var firstRowValues = firstRange.getValues(); var titleColumns = firstRowValues[0]; // data(1行分) var rowValues = []; // 取得範囲を変更したい場合は rowIndex(開始行) を変更する。 var lastRow = sheet.getLastRow(); // 最終行 for(var rowIndex=lastRow; rowIndex<=lastRow; rowIndex++) { var colStartIndex = 1; // A var rowNum = 1; // 1行分 var range = sheet.getRange(rowIndex, colStartIndex, rowNum, sheet.getLastColumn()); var values = range.getValues(); rowValues.push(values[0]); } // create json var jsonArray = []; for(var i=0; i<rowValues.length; i++) { var line = rowValues[i]; var json = new Object(); for(var j=0; j<titleColumns.length; j++) { json[titleColumns[j]] = line[j]; } jsonArray.push(json); } return jsonArray; }
書き換える部分ですが[スプレッドシートのID]は、もしGoogleスプレッドシートのURLが以下の形だったら
https://docs.google.com/spreadsheets/d/ABCD123456/edit#gid=12345678
ABCD123456の部分になります。
赤枠内の▼をクリックしてファイル名も変更しておきます。(今回は「code」としました)
「公開」→「ウェブ アプリケーションとして公開」をクリック
プロジェクトバージョンのところに「1」と入力。
赤枠内のように選択して、導入ボタンをクリックして承認。これでGASがデプロイされます。
もう一度「ウェブ アプリケーションとして公開」をクリックすると、このような表示になります。
現在のウェブ アプリケーションのURLをコピー。
ChromeのシークレットモードでURLにアクセスしてみて、上記のような形のJSONが出力されているか確認してみてみます。
[{"ga:date":"2017-02-13T15:00:00.000Z","ga:users":XX,"ga:newUsers":XX,"ga:sessions":XX,"ga:goal1Completions":XX,"ga:pageviews":XX}]
※エラーが出る場合はGoogleスプレッドシートがキチンと共有になっているか確認してください。
これでGASの設定は完了です。
最後に
今回は私がGASがわかってないため、@daichan4649 さんを最後まで付き合わせてしまったという。身近にGASの神がいて本当によかった…。(泣)
POSTがいいとかGETがいいとか、色々注文ばっかで都度修正お願いしてホントすみませでした…。(大反省)
GASの不思議な振る舞い(権限や認証周りとか)を見る限り、結果的にLogicAppsとの兼ね合いもあって「GETがよさそう」という結論に至りましたが。
さて、次は最後「Logic Appsの設定」に移ります!
参考サイト
今回使用させていただいたGoogle Apps Script(GAS)の元コードはこちら
https://gist.github.com/daichan4649/a6fcfe0781dd078e0c1a3f44db63446b