Отказ от ответственности: Я новичок в скрипте Google Apps.
Я пытаюсь создать расписание в Google Sheets, которое позволяет пользователю входить и выходить из системы, чтобы регистрировать часы в конкретном проекте. Я позаимствовал код из видео YouTube об общей структуре настройки всего этого.
Вот как выглядит пустой табель рабочего времени. Это довольно просто:
Я создал пользовательскую кнопку (справа), где пользователь нажимает «Старт», и ячейка A2 вводит метку времени. Затем пользователь может нажать кнопку «Конец», и появится вторая отметка времени, на этот раз в B2, вместе с простым вычислением в C2, которое измеряет дельту в двух отметках времени, таким образом давая продолжительность времени, проведенного на данном задача или проект. Вот как это выглядит:
Когда пользователю нужно снова нажать «Старт», в ячейке A3 появится новая отметка времени и т. Д., А также новое дельта-вычисление для каждой новой строки.
Проблема: Я не могу получить простое дельта-вычисление в столбце C, чтобы увеличивать каждую новую строку, чтобы функция setFormula
не содержала жестко закодированных ссылок на ячейки A2 и B2. Смотрите ниже код для того, что у меня есть:
function setValue(cellName, value) {
SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value);
}
function getValue(cellName) {
return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue();
}
function getNextRow() {
return SpreadsheetApp.getActiveSpreadsheet().getLastRow() + 1;
}
function addStartRecord (a) {
var row = getNextRow();
setValue('A' + row, a);
}
function addEndRecord (b, c) {
var row = getNextRow()-1;
setValue('B' + row, b);
setValue('C' + row, c);
}
function punchIn() {
addSRecord(new Date());
}
function punchOut() {
addERecord(new Date(), '=B2-A2');
}
Проблема с функцией punchOut()
внизу. Есть идеи о том, как увеличить этот дельта-калькулятор на каждую новую строку?
Примечание: Я видел довольно хороший ответ на подобный вопрос здесь , но код выдает ошибку в редакторе сценариев после строки, содержащей data[i] = ['=A' + i+1.toString() + ' + 1 ' ]
. Кроме того, я не хочу устанавливать окончательную последнюю строку для вычисления дельты (например, 20 в этом примере). Я бы хотел, чтобы пользователь мог записывать столько нового времени начала / окончания проекта, сколько ему хотелось бы.
Редактировать: Вот ссылка на расписание, чтобы вы могли проверить код.