Google SpreadsheetをGoogle Apps Scriptを用いて簡易的なデータ受信・記録サーバーにすると開発・テストにとても便利です。ただしSpreadsheetにもデータ上限があるので、永続的に1つのファイルにデータを書き続けていると溢れてしまい、新規データを保存できなくなります。
そこで保存先を分割することを考えてみました。ここでは日付ごとに違うSpreadsheetにすることとしました。
下のコード例では指定したフォルダーに「yyyyMMdd」(例:20210123)というファイル名のSpreadsheetにデータを保存(追記)していきます。ここでファイルがなければ生成とヘッダーとなる1行目を記入してから追記します。
DATA_FOLDER_ID = "!!!!! input FOLDER ID !!!!!";
function openDataFile() {
var dataFolder = DriveApp.getFolderById(DATA_FOLDER_ID);
var strDate = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMdd');
var fi = dataFolder.getFilesByName(strDate);
var dataFile;
if (fi.hasNext()) {
Logger.log("found");
dataFile = fi.next();
} else {
Logger.log("not found");
var sf = SpreadsheetApp.create(strDate);
var sheet = sf.getSheets()[0];
sheet.appendRow(["date", !!!!! input header info !!!!! ]);
dataFile = DriveApp.getFileById(sf.getId());
dataFile.moveTo(dataFolder);
}
Logger.log(strDate);
return dataFile;
}
function doPost(ee) {
var strDate = new Date();
var dataFile = openDataFile();
var sheet = SpreadsheetApp.openById(dataFile.getId()).getSheets()[0];
try {
var line = ee.postData.getDataAsString();
var values = JSON.parse(line);
var value1 = values.value1;
!!!!! change and add your json parse code !!!!!
sheet.appendRow([strDate, value1 !!!!! input your value names !!!!! ]);
} catch (e) {
sheet.appendRow([strDate, "error", line, e ]);
}
}
コード例では毎日となっていますが、ファイル名(openDataFile内のstrDate変数)の生成定義を変更すれば毎月、毎週などと展開可能です。
またJSONデータを受信していますが、実際には何でも構いません。実際に私が試行したのはJSONに近いけれどもJSONではない形式のデータをJSON形式にreplaceで変換してからパースしていました。