Google скрипт для вставки текущей даты только один раз в ячейку, когда конкретные значения выбраны в одной строке, другой ячейке - PullRequest
0 голосов
/ 02 ноября 2018

Я работаю над сценарием, который доставляет мне неприятности. Столбец G имеет значения списка выбора M1, M2, M3, S1, S2, S3, S4, S5, C1, C2, C3. Я хотел бы, чтобы в столбце t была вставлена ​​временная метка, когда любое из S-значений (S1, S2, S3, S4, S5) выбрано из списка выбора. Я хотел бы, чтобы это было сделано только при первом появлении, а не при последующем обновлении или изменении значения списка выбора в столбце g.

Я близок, но текущий скрипт обновляет дату во всем столбце t.

Я также хотел бы очистить строку 9, если это возможно.

Пока у меня есть это:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('ClientList');
  var stageValues = s.getRange('g3:g').getValues();
  var dateValues = s.getRange('t3:t').getValues();

  for (var row in stageValues) 
    for (var col in stageValues[row])
      if (stageValues[row][col] == 'S1' || stageValues[row][col] == 'S2' || stageValues[row][col] == 'S3' || stageValues[row][col] == 'S4' || stageValues[row][col] == 'S5' && dateValues[row][col] == '') {
        num = parseInt(row) + 3;
        s.getRange('t' + num).setValue(new Date());
        }
  };

1 Ответ

0 голосов
/ 02 ноября 2018

Вы говорите, значения списка выбора, я предполагаю, что вы имеете в виду выпадающий список. Но независимо от этого это будет работать. Когда ячейка редактируется вручную в столбце G, триггер onEdit проверит значение «S» и метку времени в колонке T. Если метка времени не найдена, будет установлена ​​новая метка времени. «e» - это триггерный объект, содержащий информацию о редактируемой ячейке.

function onEdit(e) {
  try {
    if( e.range.getSheet().getName() === "ClientList" ) {
      if( e.range.getColumn() === 7 ) {  // edit in column G
        if( e.value.charAt(0) === "S" ) {
          if( e.range.offset(0,13,1,1).getValue() === "" ) {  // no value in T
            e.range.offset(0,13,1,1).setValue(new Date());
          }
        }
      }
    }
  }
  catch(err) {
    Logger.log(err);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...