如何清除包含特定单词的特定列中的单元格

时间:2019-01-08 21:17:58

标签: google-apps-script google-sheets

我正在尝试编写一个脚本,使我可以清除包含单词“ variant”的单元格。我找到了用于删除行的脚本,并尝试对其进行修改以改为清除单元格,但我一直没有成功。我的工作表中没有可识别的任何数据,我很乐意与愿意提供帮助的人共享该数据。

该工作簿包含两张纸,我用一张纸“粘贴/删除”数据,用第二张纸“打印”以我喜欢的方式格式化的信息。

删除行的问题在于,它删除了公式,然后将数据弄乱了,以备以后使用。

我遇到的问题是,当我从使用的软件下载选择列表时,将项目和项目大小(变量)分成单独的行(行)。因此,我将所有数据粘贴到“粘贴/删除”页面中,然后切换到“打印”页面。在打印页面上,我正在尝试清除B列中每个带有“ Variant”字样的单元格。C列中将包含“ variant”字样,因此我无法清除所有包含“ variant”的单元格。

用于删除行的菜单项的代码

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")  
}

编辑者的笔记 :这是请求者发表在评论中的代码。该代码不完整,因为整个代码无法放入一个注释中,并且询问者尚未提供更多详细信息

0 个答案:

没有答案