Google Apps-Script - Как заблокировать диапазон данных, используя сегодняшнюю дату и контрольную дату - PullRequest
2 голосов
/ 11 октября 2019

Я хотел бы заблокировать строку данных после того, как они были заполнены с использованием даты в качестве ссылки. Каждый раз, когда данные собираются, дата будет автоматически регистрироваться в столбце A листа Google. Используя эту зарегистрированную дату в качестве ссылки и сравнивая ее с сегодняшней датой. Если разница составляет 4 дня, строка будет заблокирована и не сможет быть отредактирована.

1 Ответ

2 голосов
/ 11 октября 2019

Ответ:

Вы можете заблокировать диапазоны таблицы Google от редактирования с помощью метода Range.protect ().

Пример кода:

Вам необходимо создать диапазон защиты с помощью метода Range.protect(), который определяет необходимый диапазон. Согласно примеру скрипта приложения:

function doProtections() {
  var ss = SpreadsheetApp.getActive();
  var range = ss.getRange('A1:Z1'); // Example of protecting Row 1
  var protection = range.protect().setDescription('Protected range name');

  var me = Session.getEffectiveUser();
  protection.addEditor(me);
  protection.removeEditors(protection.getEditors());
  if (protection.canDomainEdit()) {
    protection.setDomainEdit(false); 
  }
}

Затем вы можете создать устанавливаемый триггер , который запускается каждый день, сравнивая текущую дату с датой в нужной ячейке:

function runEachDay() {
  var today = new Date()
  var dateToCheckAgainst = new Date(SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange('A1').getValue())

  if (today.getTime() - dateToCheckAgainst.getTime() > 345600000) {
    doProtections();
  }
}

Примечание: Сравнение с 345600000 является временем Unix - 345600000 мс равняется 4 дням, поэтому, если прошло более 4 дней с даты в ячейке, которую вы проверяете (в моемпример функции A1), затем код будет запущен.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...