Как я могу восстановить определенную версию моего листа Google с помощью сценария Google? - PullRequest
0 голосов
/ 14 мая 2019

Мне нужна кнопка для восстановления определенной версии моего листа Google, когда я нажимаю ее с помощью скрипта Google.

Причина в том, что я хочу очистить свой лист Google, но установитьдо того же формата и всего, что и в оригинальной версии, на случай, если кто-то изменит формат ячеек.

Хотя я мог бы добавить кнопку и восстановить версию до первоначальной, прежде чем кто-либо введет какие-либо данные.

Есть идеи о том, как сделать это с помощью сценария?(Я открыт для предложений)

Спасибо!

1 Ответ

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

Я не думаю, что вы можете восстановить версию, используя Google Script, так как процесс запуска скрипта обновляет текущую версию в любом случае.

Вы можете написать скрипт, который очистит все редактируемые ячейки (и установите любое форматирование обратно на значение по умолчанию) и добавьте его в пользовательское меню, чтобы можно было сбросить лист при нажатии кнопки.

Это может привести к тому же результату, который вы ищете.

Вот один из них, который я использовал ранее, но он явно соответствует моим потребностям.

function clear() {
  SpreadsheetApp.getActiveSpreadsheet().toast('Deleting');
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getDataRange();
  range.clear();
  sheet.getRange(1,1).setValue('Copy and paste Data here')
   .setBackground('yellow');
  var maxRows = sheet.getMaxRows();
  var maxColumns = sheet.getMaxColumns();
  sheet.setFrozenRows(0);
  sheet.deleteColumns(2,maxColumns-1);
  sheet.deleteRows(2,maxRows-1);
  sheet.setColumnWidth(1, 100)
  SpreadsheetApp.getActiveSpreadsheet().toast('Deleted');
}

function onOpen() {
  SpreadsheetApp.getUi()
   .createMenu('Custom Menu') 
   .addItem('Clear','clear')
   .addToUi();
}

Более конкретный пример для вас может быть:

function clear() {
  SpreadsheetApp.getActiveSpreadsheet().toast('Deleting');
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  sheet.getRange('A26:E30').clearContent();
  sheet.getRange('A33:E37').clearContent();
  sheet.getRange('A40:E44').clearContent();
  sheet.getRange('D2:D3').clearContent();
  sheet.getRange('D5:D9').clearContent();
  sheet.getRange('D12:D16').clearContent();
  sheet.getRange('D18').clearContent();
  sheet.getRange('A19').setValue(false);
  sheet.getRange('C19').setValue(false);
} 

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

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