use*_*962 1 google-sheets google-apps-script
下面是一个用于从电子表格中删除重复行的 Google 表格脚本。虽然它确实可以删除重复的行,但它也会在此过程中破坏单元格内的公式。我目前有一系列工作表,其中所有原始数据都包含在 Columns 中A:P,并且我的所有公式都归入 Columns Q:T。
在我尝试限制以下脚本仅适用于列时,A:P我在运行脚本时收到缺少参数错误。
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange("A2:P").getValues();
Run Code Online (Sandbox Code Playgroud)
TL:DR,我喜欢这个脚本,但我想限制它的运行范围。有什么帮助吗?谢谢。
https://developers.google.com/apps-script/articles/removing_duplicates
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row.join() == newData[j].join()){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length,
newData[0].length).setValues(newData);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我相信以下内容是一个有效的问题,但我想添加一个可能对正在发生的事情产生一些影响的新观察(??)。当我从工作表中启动查找和替换以删除单词“null”的所有实例时,工作表将删除 null 并保留所有其他单元格。但是,如果我运行脚本来删除“null”,它会重新格式化所有单元格,将日期和时间更改为小数。是否有一种方法可以运行脚本并避免整体意外操作(例如工作表宽度重新格式化)?
您将需要使用getRange()函数来指定要使用的范围。
var sheet = SpreadsheetApp.getActiveSheet();
var rng = sheet.getRange("A2:P")
var data = rng.getValues();
Run Code Online (Sandbox Code Playgroud)
另外,您可以使用此行清除整个工作表,sheet.clearContents();而不是使用此行
rng.clearContents()
Run Code Online (Sandbox Code Playgroud)
这样你就只清除指定范围内的内容rng
你的最终代码应该是这样的
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var rng = sheet.getRange("A2:P")
var data = rng.getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row.join() == newData[j].join()){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
rng.clearContents();
sheet.getRange(1, 1, newData.length,
newData[0].length).setValues(newData);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12746 次 |
| 最近记录: |