我正在尝试在谷歌工作表上创建一个脚本,当我单击一个复选框时,另一张工作表将使用带有该单击日志的新行进行更新。我现在的问题:
我试图获取它,以便当我取消选中该复选框时,它会记录取消选中的时间。我的问题是,我无法从 while 循环或条件循环中找到解决方法,在将其设置为 false 后,它会执行一次操作,并且不会连续执行该操作。这是我的代码:
function hours12(today=(new Date())) {
let hours = (today.getHours() + 24) % 12 || 12;
return hours;
}
function TIMESTAMP() {
let today = new Date();
let mins = ('0'+ today.getMinutes()).slice(-2);
let seconds = ('0'+ today.getSeconds()).slice(-2);
let hours = hours12(today)
let date = (today.getMonth()+1)+'-'+today.getDate()+'-'+ (today.getYear()-100);
let time = hours + ":" + mins + ":" + seconds;
let dateTime = date+' '+time;
return dateTime;
}
function onEdit() {
let ss = SpreadsheetApp.getActive();
let sheet = ss.getSheetByName('check-out');
let logSheet = ss.getSheetByName("equip-log");
let selectedRow = sheet.getActiveRange().getRow();
let checkbox = sheet.getRange(selectedRow, 5).getValue();
let person = sheet.getRange(selectedRow, 2).getValue();
let equip = sheet.getRange(selectedRow, 1).getValue();
let condition = sheet.getRange(selectedRow, 4).getValue();
let checkout = sheet.getRange(selectedRow, 3).getValue();
while (checkbox == true) {
if (person == '' || equip == '' || condition == '' || checkout == '') {
Logger.log('Incomplete row information while true');
break;
} else {
addValues(checkbox, logSheet, equip, person, condition, checkout);
break;
}
}
if (checkbox == false) {
let logRange = logSheet.getDataRange().getValues();
for (i=0; i<logRange.length;i++) {
let rangeValue = logRange[i];
console.log(selectedRow)
if (!rangeValue.includes(equip, person, condition)) {
Logger.log('Incomplete row information while false');
} else {
addValues(checkbox, logSheet, equip, person, condition, checkout);
sheet.getRange(selectedRow, 2).clearContent();
sheet.getRange(selectedRow, 4).clearContent();
}
}
}
}
function addValues(checkbox, logSheet, equip, person, condition, checkout) {
const current = TIMESTAMP()
if (checkbox == true) {
logSheet.appendRow([equip, person, checkout, '', condition])
} else {
logSheet.appendRow([equip, person, '', current, condition])
}
}
尝试从这样的日志开始:
function onEdit(e) {
const sh = e.range.getSheet();
if (sh.getName() == 'check-out' && e.range.columnStart == 5) {
let [equip, person, checkout, condition, checkbox] = sh.getRange(e.range.rowStart,1,1,5).getValues();
let logSheet = e.source.getSheetByName("equip-log");
logSheet.appendRow([new Date(),equip, person, checkout, condition, checkbox])
}
}