Заморозить дату в Google Sheets - PullRequest
0 голосов
/ 05 января 2019

Я довольно новичок в написании сценариев в Sheets, и я не могу заставить это работать. У меня есть две колонки. В столбце A я хочу, чтобы дата появлялась и «зависала» в ячейке, когда я заполняю ячейку рядом с ней в столбце B, и только потом.

Я перепробовал несколько вещей и получил вдохновение отсюда: Заморозить дату, однажды введенную? , но я не могу заставить ее работать. Я в основном хочу:

В ячейке в A1: =IF(ISBLANK(B1), "", TODAY())

Но сегодняшний день не должен обновляться, если я не изменю B1.

Я пробовал:

function FreezeDate(String) {
  if (String == "") {
    return ""
  } else {
    return new Date()       
  }
}

Я также пытался использовать OnEdit(String) с тем же телом, что и FreezeDate, но это также меняет дату открытия листа.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Спасибо за ответ. Я думал, что onEdit (e) нужно было дать аргумент, и он сработал, когда это было изменено. Я знаю, вижу, что это не так. Я думаю, я понял это:

function onEdit(e) {
  var ss = SpreadsheetApp.getActive();
  var activeRow = ss.getActiveCell().getRow();
  var activeCol = ss.getActiveCell().getColumn();
  var activeCellValue = ss.getActiveCell().getValue();

  // target cell is in same row as active cell and in column 4 (D)
  var targetCell = SpreadsheetApp.getActiveSheet().getRange(activeRow, 4)

  // only trigger when change is in column A, when a cell is '-' should not 
  trigger
  if (activeCol == 1 && activeCellValue != '-') {
      targetCell.setValue(new Date())
  } else {
      targetCell.setValue("")
  }
}
0 голосов
/ 05 января 2019

Это то, что вы ищете? Дата добавляется в первый столбец только в том случае, если редактируется второй столбец той же строки, а первый столбец пуст. Поэтому любые дальнейшие правки второго столбца не изменяют запись даты в этой строке.

function insertDateCol1WhenCol2IsEdited(e){//Use with an installable onEdit trigger
  var sheetname='Your Sheet Name'
  var rg=e.range;
  var sh=rg.getSheet();
  if(sh.getName()!=sheetname){return;}
  if(sh.getName()==sheetname && rg.columnStart==2 && sh.getRange(rg.rowStart,1).isBlank()){
    sh.getRange(rg.rowStart,1).setValue(new Date());
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...