Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Google Apps Script (spreadsheet) автоустановка даты и времени. (https://javascript.ru/forum/misc/70619-google-apps-script-spreadsheet-avtoustanovka-daty-i-vremeni.html)

RocketDocks 20.09.2017 00:08

Google Apps Script (spreadsheet) автоустановка даты и времени.
 
Доброго времени суток!

Нужен скрипт, который бы выполнял следующую задачу:
Если в первой ячейке находятся данные (не важно какие), то во-вторую ячейку записать сегодняшнюю дату.


Собственно гугл-поиск выдал не мало результатов.
Я объединил несколько найденных кодов, так как в каждом из них чего-нибудь да не хватало, либо работало не так как нужно.
Этот код работает, но дату и время он записывает в разные ячейки, ну и плюс сам код разросся в полтора раза.

function onEdit(e){
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveRange();
  var row = range.getRow(); // Адрес строки активной ячейки
  var col = range.getColumn();
  var name = sheet.getName();
  if (name == "Лист1" && col == 8){ // Если изменения на листе "Лист1" и в колонке H
    if (sheet.getRange(row , 10).getValues()==''){ //Если дата в колонке 10 не заполнена
      sheet.getRange(row, 10).setValues([[new Date()]]); //Заполняем текущую дату
    }
  }
  if (name == "Лист1" && col == 8){ // Если изменения на листе "Лист1" и в колонке F
    if (sheet.getRange(row , 11).getValues()==''){ //Если дата в колонке 11 не заполнена
      sheet.getRange(row, 11).setValues([[new Date().toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "'$1")]]); //Заполняем текущее время
    }
  }
};





Как сделать так, чтобы эта часть кода выдавала одновременно и время и дату в одной ячейке?
Я знаю, что это возможно, но самому не удается прийти к решению проблемы.
sheet.getRange(row, 11).setValues([[new Date().toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "'$1")]]);



В программировании не силен, поэтому если не затруднит объясните как для полного чайника.

рони 20.09.2017 00:22

RocketDocks,
sheet.getRange(row, 11).setValues([[new Date().toLocaleString('ru')]]);

RocketDocks 20.09.2017 00:36

рони,
Круто!
Все работает.
А можно как то формат даты изменить?

Сейчас дату выдает в таком виде:
20 сентября 2017 г. 7:00:00 PKT


Как привести к такому:
20.09.17 7:00:00

рони 20.09.2017 00:46

RocketDocks,
new Date().toLocaleString('ru', {
    year:'2-digit',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
})


https://developer.mozilla.org/ru/doc...toLocaleString

RocketDocks 20.09.2017 17:33

рони,
Благодарю.
Нашел еще один способ)

Формат > Числа > Другие форматы
Там можно менять как душе угодно.


Часовой пояс GMT +3, время: 05:52.