我正在尝试编写一个脚本,使我可以清除包含单词“ 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")
}
编辑者的笔记 :这是请求者发表在评论中的代码。该代码不完整,因为整个代码无法放入一个注释中,并且询问者尚未提供更多详细信息