Возникли проблемы с печатью значения в той же строке в скрипте Google (система времени входа / выхода) - PullRequest
0 голосов
/ 11 июля 2020

Вот идея моей электронной таблицы: я хочу создать электронную таблицу, которая позволит мне нажимать кнопку для входа и другую кнопку для выхода. Я единственный пользователь, поэтому многопользовательская функциональность не нужна. Я хочу иметь возможность входить (например, в 12:00) и выходить в разное время (например, 18:00). Моя проблема в том, что всякий раз, когда я хочу выйти, он будет записывать время выхода из следующий столбец. Как я могу добраться туда, где он будет записывать время выхода часов в той же строке, что и часы во времени?

Вот мой код:

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 addStart(a, b, c, d){
  var row = getNextRow();
  setValue('A' + row, a); // employee name row
  setValue('B' + row, b); // date row
  setValue('C' + row, c); // clock in time row
  setValue('D' + row, d); // clock out time row
}

function punchIn(){
  var dd = new Date();
  var currentTime = dd.toLocaleTimeString();
  addStart("Employee1", new Date(), currentTime, "")
}
function punchOut(){
  var dd = new Date();
  var currentTime = dd.toLocaleTimeString(); 
  addStart("","","",currentTime);
}

1 Ответ

1 голос
/ 11 июля 2020

Проблема в том, что и punchIn, и punchOut используют функцию getNextRow, таким образом, выход будет строкой после входа.

Следуя представленному шаблону, вы «упускаете» функции getCurrentRow и addEnd для функции punchOut. Вот они добавлены в:

function setValue(cellName, value){
  SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value);
}

function getValue(cellName){
  return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue();
}
function getNextRow(){
  return getCurrentRow() + 1;
}
function getCurrentRow(){
  return SpreadsheetApp.getActiveSpreadsheet().getLastRow();
}
function addStart(a, b, c, d){
  var row = getNextRow();
  setValue('A' + row, a); // employee name row
  setValue('B' + row, b); // date row
  setValue('C' + row, c); // clock in time row
  setValue('D' + row, d); // clock out time row
}
function addEnd(endTime) {
  var row = getCurrentRow();
  setValue('D' + row, endTime);
}
function punchIn(){
  var dd = new Date();
  var currentTime = dd.toLocaleTimeString();
  addStart("Employee1", new Date(), currentTime, "")
}
function punchOut(){
  var dd = new Date();
  var currentTime = dd.toLocaleTimeString(); 
  addEnd(currentTime);
}
...