Запрашивать диапазон в листе, чтобы очистить текст, но сохранить формулы - PullRequest
0 голосов
/ 25 мая 2018

У меня есть пункт меню для «очистки листа». То, что я пытаюсь выполнить, это всплывающее окно с подсказкой для текста, где вы должны ввести диапазон, т. Е. «A4: P6», и сценарий затем очистит ячейки для любых значений.а затем вставьте обратно любые формулы в этих ячейках.Я не смог найти никаких записей об этом и застрял с кодом в течение некоторого времени.

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('Clear Range', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Email')
          .addItem('Second item', 'menuItem2'))
          .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
       var mySheet = SpreadsheetApp.getActiveSpreadsheet();
       var sheet = mySheet.getSheetByName('Pre op Board');

       var ui = SpreadsheetApp.getUi();

       var result = ui.prompt('What cell to start with?', 
                                        ui.ButtonSet.OK);

       var result2 = ui.prompt('How many cells?', ui.ButtonSet.OK);

       // Process the user's response.
       var button = result.getSelectedButton();
       var cell = result.getResponseText();

       var button2 = result2.getSelectedButton();
       var numCells = result2.getResponseText();

       var cellRange = sheet.getRange(cell); 
       cellRange = cellRange.offset(numCells);
  var values = cellRange.getValues();
  var range = sheet.getRange(cell);
 var formulas = range.getFormulas();
 for (var i in formulas) {
   for (var j in formulas[i]) {
     Logger.log(formulas[i][j]);
     sheet.getRange(cell).clearContent();
 var cell = sheet.getRange(cell);
 cell.setFormulas(formulas);
   }
}}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
     .alert('You clicked the second menu item!');
}  

1 Ответ

0 голосов
/ 25 мая 2018

Пожалуйста, посмотрите на это:

// Add menu to the spreadsheet
function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('Custom Menu')
      .addItem('Show pop-up', 'showPopUp')
      .addToUi();
}

function showPopUp() {
  var ui = SpreadsheetApp.getUi()

  var result = ui.prompt(
      'This is the title of the popup',
      'This is the request (ex. insert range)',
      ui.ButtonSet.OK_CANCEL)  // Delete "_CANCEL" if you don't need the Cancel button

  // Process the user's response
  var text = result.getResponseText()  // Text is the name of the variable you need (string of range defined)
  
  // Feedback on what button was clicked -> Maybe you don't need this part
  var button = result.getSelectedButton()
  if (button == ui.Button.OK) {
    // When "OK" is clicked
    ui.alert('Your range is ' + text + '.')
  } else if (button == ui.Button.CANCEL) {
    // When "Cancel" is clicked
    ui.alert('Cancel pressed')
  } else if (button == ui.Button.CLOSE) {
    // When X in the title bar is clicked
    ui.alert('You closed the dialog')
  }
}

Этот код отображает подсказку с запросом текста.Если вы напишите текст внутри и нажмете «ОК», вы получите переменную «текст» с нужным вам текстом.

...