私はArduinoからセンサーデータでGoogleシートを更新するためにTembooを使用しています。私は、データを手動で入力していないので、各データエントリに時間と日付スタンプを追加するためにスクリプトを使用していますが、私はonEdit()トリガを使用することができません。私はまた、幸運なしで(トリガパラメータはRun:onChange、Events:変更時にスプレッドシートから)以下のようにonChange()トリガを作成しようとしました。インストール可能なトリガーの有無にかかわらずこれを行う方法はありますか?ユーザーが手動で変更するのではなく、API呼び出しによってセルの値が変更されたときにスクリプトをトリガーするにはどうすればよいですか?
function onChange(e){
var timezone = "GMT+8";
var date_format = "MM/dd/yyyy";
var time_format = "hh:mm:ss";
var updateColName = "sensor";
var DateColName = "date";
var TimeColName = "time";
// update time and date if the sheet is updated via an api call
if (e.changeType == "OTHER") {
var sheet = event.source.getSheetByName('Sheet1'); //Name of the sheet where you want to run this script.
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(DateColName);
var timeCol = headers[0].indexOf(TimeColName);
var updateCol = headers[0].indexOf(updateColName);
updateCol = updateCol + 1;
if (dateCol > -1 && timeCol > -1 && index > 1 && editColumn == updateCol) {
// only timestamp if 'Last Updated' header exists, but not in the header row itself!
var cellDate = sheet.getRange(index, dateCol + 1);
var cellTime = sheet.getRange(index, timeCol + 1);
var date = Utilities.formatDate(new Date(), timezone, date_format);
var time = Utilities.formatDate(new Date(), timezone, time_format);
cellDate.setValue(date);
cellTime.setValue(time);
}
}
};
ありがとうございます!
時間、日付をaudrino自体でコーディングして挿入することを考えましたか? –
私は時間ライブラリを使用しようとしましたが、スケッチの実行が開始されてから経過時間ではなく、実際の時間(つまり、コンピュータの時刻と同期する)に問題がありました。それがより簡単になると思うなら、私はもう一度それを試してみることができます! – Cassandra