Сценарий приложения проверяет, содержит ли столбец определенную дату записи слова в конкретный столбец - PullRequest
0 голосов
/ 29 мая 2019

я получаю текущую дату-время в столбце.Но мне нужно изменить только столбец, если в ячейках COLUMNTOCHECK (3) есть текст «назначить».

В тот момент, когда ячейка в столбце 3 меняет все ячейки в столбце 11, на текущее время.только ячейка в столбце 11, которая находится в той же строке, что и последнее измененное «назначение», должна быть изменена.

Так что мне нужно;если 1 ячейка в столбце 3 получит значение «назначить», текущая дата и время должны появиться в той же строке и столбце 11. В тот же момент, когда тот же вызов вернется к чему-то другому, дату и время не следует трогать!

Мне нужно узнать текущее время, когда в определенной ячейке появилась ошибка.Момент появления ошибки - это момент, когда ячейка в столбце 3 получает значение "assign"

var COLUMNTOCHECK = 3;
var DATETIMELOCATION = [0,11];
var SHEETNAME = 'Blad1'

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();  
if( sheet.getSheetName() == SHEETNAME ) { 
  var selectedCell = ss.getActiveCell();    
if( selectedCell.getColumn() == COLUMNTOCHECK && ) { 
  var dateTimeCell = 
   selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
  dateTimeCell.setValue(new Date());
  }
 }
}


// i tried other code but this one gives no result back; 

function test(test1){
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet()  

  var data = sheet.getDataRange().getValue();
  var data_length = data.length;  
for(var i=0; i<data_length; i++) {
   if(data[i][0] == "assign") {
  ss.getRange(i+1,11).setValue((new Date()));

  }
 }

}

, которое мне нужно, и результат даты и времени в конкретной ячейке, например 29-5-2019 11:33:26:

1 Ответ

0 голосов
/ 29 мая 2019

Это должно сделать именно то, что вы ожидаете.

Примечание: вы не сможете запустить это вручную, оно будет запускаться автоматически при редактировании листа.

function onEdit(e) {
  var sh = e.source.getActiveSheet();
  var col = e.range.getColumn();
  var val = e.range.getValue();

  //check if sheet is 'Blad1', column edited is 'C' & value is 'assign'
  if (sh.getSheetName() === 'Blad1' && col === 3 && val === 'assign') {
    var row = e.range.getRow();
    var tz = e.source.getSpreadsheetTimeZone();
    var date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy hh:mm:ss a');

    //set date in column 11 for same row
    sh.getRange(row, 11).setValue(date);
  }
}

Время для этого сценария основано на текущих настройках часового пояса вашей таблицы, как вы можете видеть в var tz.Они могут быть изменены очень легко в зависимости от ваших потребностей, вот несколько примеров, если вам нужно изменить его в соответствии с вашими требованиями.

//use spreadsheet timezone setting
var tz = e.source.getSpreadsheetTimeZone();

//use script timezone setting
var tz = Session.getScriptTimeZone();

//enter your own time zone
var tz = 'GMT+0';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...