я получаю текущую дату и время в столбце. Но мне нужно изменить столбец только в том случае, если в ячейках COLUMNTOCHECK (3) есть текст «назначить».
В тот момент, когда ячейка в столбце 3 изменяется, все ячейки в столбце 11 изменяются на текущее время. следует изменить только ячейку в столбце 11, которая находится в той же строке, что и последнее измененное «назначение».
Итак, что мне нужно; если 1 ячейка в столбце 3 получает значение «назначить», текущая дата-время должна отображаться в той же строке и столбце 11. В тот момент, когда тот же вызов меняется на что-то другое, дату-время не следует трогать!
Мне нужно получить текущее время, когда в конкретной ячейке появилась ошибка. Моментом появления ошибки является момент, когда ячейка в столбце 3 получает значение «назначить».
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:
Это должно делать именно то, что вы ожидаете.
Примечание: вы не сможете запустить это вручную, оно запустится автоматически при редактировании листа.
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';
Это именно то, что я искал! Спасибо добрый сэр!!