Ищу помощь в другом дополнении к исходному сценарию, чтобы включить создание метки времени

#google-apps-script #google-sheets #timestamp

Вопрос:

У меня есть 2 сценария onEdit, один для флажка для перемещения на другой лист, а другой-отметка времени, я хотел объединить их оба и пересмотреть в соответствии с различными требованиями

Установите Флажок Сценарий:

 The requirements when the check box in column 15 is true the data will transfer to AM2 and a check box will created in Column 17 and when the last is true the row will move to sheet Done 
 
 
    function onEdit(event) {
      // assumes source data in sheet named main
      // target sheet of move to named Completed
      // getColumn with check-boxes is currently set to colu 15 or o
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var s = event.source.getActiveSheet();
      var r = event.source.getActiveRange();

      if(s.getName() == "AM1" amp;amp; r.getColumn() == 15 amp;amp; r.getValue() == true) {
        var row = r.getRow();
        var numColumns = s.getLastColumn();
        var targetSheet = ss.getSheetByName("AM2");
        var target = targetSheet.getRange(targetSheet.getLastRow()   1, 1);
        s.getRange(row, 1, 1, numColumns).moveTo(target);
        s.deleteRow(row);
      } else if(s.getName() == "AM2" amp;amp; r.getColumn() == 17 amp;amp; r.getValue() == true) {
        var row = r.getRow();
        var numColumns = s.getLastColumn();
        var targetSheet = ss.getSheetByName("DONE");
        var target = targetSheet.getRange(targetSheet.getLastRow()   1, 1);
        s.getRange(row, 1, 1, numColumns).moveTo(target);
        s.deleteRow(row);
      }
    }
 
 the goal from the above timestamp will be generated in sheet AM1 column 14 once column 15 is true and again will be generated in column 16 once column 17 is true   
 

отметка времени:

 const onEdit = (e) => {         
if(e.range.columnStart === 14 amp;amp; e.range.rowStart > 2)         
{         
if(e.range.getSheet().getName() === 'AM1' , 'AM2' ) {          
const oSet = e.range.offset(0,-2)         
e.value ? oSet.setValue(new Date()) : oSet.clearContent()         
}         
}         
}   



A sample of the sheet is here : 
 

https://docs.google.com/spreadsheets/d/1qfkCR5N97CfePTiV8R-RYdyHpPla6KxqxrkN-iDi6IA/edit#gid=417345635

надеюсь на вашу любезную помощь и совет, если это возможно.

 Thanks, 
Adabsiz
 

Комментарии:

1. я немного отредактировал сценарий, но не могу вставить его, одна из проблем, с которой я сталкиваюсь сейчас, заключается в том, что когда я ставлю флажок в AM1, строка переносится непосредственно на лист «ГОТОВО», а не на AM2, который, как предполагается,

2. Примерно I have 2 onEdit Script one for the check box to move to different sheet and the other timestamp так , когда я увидел ваш образец электронной таблицы, я обнаружил check box . Но я не могу найти timestamp . Где я могу его найти? И, примерно The requirements when the check box in column 15 is true the data will transfer to AM2 and a check box will created in Column 17 and when the last is true the row will move to sheet Done , что это the last такое ?

3. @Tanaike, метка времени будет сгенерирована, когда флажок будет установлен, вот чего я хочу достичь

4. Спасибо, что ответили. Судя по вашему ответу, я предложил ответ. Не могли бы вы, пожалуйста, подтвердить это? Если я неправильно понял ваш вопрос и это было не то направление, которого вы ожидали, я приношу свои извинения.

Ответ №1:

Я считаю, что ваша цель заключается в следующем.

  • Когда флажок столбца «O» установлен, вы хотите поставить отметку времени в столбце «N».
  • Когда флажок столбца «Q» установлен, вы хотите поставить отметку времени в столбце «P».
  • Вы хотите запустить вышеописанную ситуацию для листов AM1 и. AM2
  • А также вы хотите объединить свой текущий onEdit сценарий, показанный в верхнем сценарии вопроса.

В этом случае, как насчет следующего примера сценария?

Пример сценария:

 function onEdit(e) {
  var obj = {"AM1": {col: 15, dst: "AM2"}, "AM2": {col: 17, dst: "DONE"}};

  var ss = e.source;
  var r = e.range;
  var s = r.getSheet();
  var sheetName = s.getSheetName();
  var o = obj[sheetName];
  if (o amp;amp; o.col == r.columnStart) {
    if (r.isChecked()) {
      r.offset(0, -1).setValue(new Date());
      var targetSheet = ss.getSheetByName(o.dst);
      var target = targetSheet.getRange(targetSheet.getLastRow()   1, 1);
      if (sheetName == "AM1") {
        var dstRange = target.offset(0, 16);
        r.copyTo(dstRange);
        dstRange.uncheck();
      }
      var row = r.getRow();
      s.getRange(row, 1, 1, s.getLastColumn()).moveTo(target);
      s.deleteRow(row);
    } else {
      r.offset(0, -1).clearContent();
    }
  }
}
 
  • В этом сценарии,
    • Когда флажок столбца «O» листа «AM1» установлен, метка времени ставится в столбец «N», а строка перемещается в следующую строку последней строки листа «AM2″, и установите флажок » снято «в столбец»Q».
    • Когда флажок столбца «Q» листа «AM2» установлен, метка времени ставится в столбец «P», и строка перемещается в следующую строку последней строки листа «ГОТОВО».

Примечание:

  • О, сценарии для When the checkbox of the column "O" is checked, you want to put the timestamp to the column "N". и When the checkbox of the column "Q" is checked, you want to put the timestamp to the column "P". , когда это отражается в сценарии, он становится следующим.
       const onEdit = (e) => {
        const range = e.range;
        if (['AM1', 'AM2'].includes(range.getSheet().getSheetName()) amp;amp; (range.columnStart === 15 || range.columnStart === 17) amp;amp; range.rowStart > 1) {
          const oSet = range.offset(0, -1);
          if (range.isChecked()) {
            oSet.setValue(new Date());
          } else {
            oSet.clearContent();
          }
        }
      }
     
    • В этом скрипте сначала лист проверяется с помощью ['AM1', 'AM2'].includes(range.getSheet().getSheetName()) . Кроме того, проверяются номер столбца и номер строки. И, когда флажок установлен, метка времени ставится в соседнюю ячейку слева от активной ячейки. Если флажок снят, соседняя ячейка слева от активной ячейки очищается.

Рекомендации: