Как очистить ячейку в определенном столбце, который содержит определенное слово - PullRequest
0 голосов
/ 09 января 2019

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

Рабочая тетрадь содержит два листа, и я использую один для «Вставки / удаления» данных, а второй - для «Распечатки» информации, отформатированной так, как я предпочитаю.

Проблема с удалением строк заключается в том, что она удаляет формулу, а затем портит данные для любого последующего использования, которое у меня есть.

Проблема, с которой я сталкиваюсь, заключается в том, что при загрузке списка выбора из программного обеспечения, которое я использую, он разделяет элемент и размер элемента (вариант) на отдельную строку (строку). Итак, я вставляю все данные на страницу вставки / удаления, а затем переключаюсь на страницу печати. На странице печати я пытаюсь очистить каждую ячейку, в которой есть слово «Вариант» в столбце B. У меня будет слово вариант в столбце C, поэтому я не могу очистить ячейки, которые содержат вариант в целом.

Код пункта меню для удаления строк

function onOpen(){
  SpreadsheetApp.getUi() 
  .createMenu('My Menu')
  .addItem('delete Data', 'deleteFunction')
  .addToUi();
}  

Код, который фактически удаляет

function deleteFunction(){
  //declarations
  var sheetName = "Pick List Creator Editable"; 
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Print');

  var dataRange = sheet.getDataRange();
  var numRows = dataRange.getNumRows();
  var values = dataRange.getValues();

  var delete_string = getUIstring();//open initial UI, save value
  if (delete_string.length < 3) return shortStringError()//UI to protect your document from an accidental entry of a very short string. 

 //removing the rows (start with i=2, so don't delete header row.) 
  var rowsdeleted = 0;
  for (var i = 2; i <= numRows; i++){
  var rowValues = values[i-1].toString();//your sheet has various data types, script can be improved here to allow deleting dates, ect. 

  if (rowValues.indexOf(delete_string) > -1){
  sheet.deleteRow(i - rowsdeleted);//keeps loop and sheet in sync
  rowsdeleted++; 
    }

  }
  postUIconfirm(rowsdeleted);//Open confirmation UI   
} 

Код для остановки удаления слишком коротких элементов

function getUIstring(){
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt("Enter the target data element for deletion")
  return response.getResponseText()
}

function postUIconfirm(rowsdeleted){
  var ui = SpreadsheetApp.getUi();
  ui.alert("Operation complete. There were "+rowsdeleted+" rows deleted.")  
}

function shortStringError(){
  var ui = SpreadsheetApp.getUi();
  ui.alert("The string is too short. Enter a longer string to prevent unexpected 
deletion")  
}

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

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