Google apps script Google脚本从选择范围中删除重复项(不是整个工作表)

Google apps script Google脚本从选择范围中删除重复项(不是整个工作表),google-apps-script,google-sheets,Google Apps Script,Google Sheets,下面是一个用于从电子表格中删除重复行的GoogleSheets脚本。在删除重复行的同时,它也会在过程中销毁单元格内的公式。我目前有一系列的工作表,其中所有原始数据都包含在列a:P中,我的所有公式都被归入列Q:T 在我尝试将以下脚本限制为仅对列A:p工作时,我在运行脚本时收到一个缺少参数的错误 var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange("A2:P").getValues(); TL:博士,

下面是一个用于从电子表格中删除重复行的GoogleSheets脚本。在删除重复行的同时,它也会在过程中销毁单元格内的公式。我目前有一系列的工作表,其中所有原始数据都包含在列
a:P
中,我的所有公式都被归入列
Q:T

在我尝试将以下脚本限制为仅对列
A:p
工作时,我在运行脚本时收到一个缺少参数的错误

var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange("A2:P").getValues();
TL:博士,我喜欢这个脚本,但我想限制它的运行范围。有什么帮助吗?多谢各位

编辑:我相信以下是一个有效的问题,但我想补充一个新的观察,可能会对正在发生的事情产生一些影响(??)。当我从工作表中启动查找和替换以删除单词“null”的所有实例时,工作表将删除null并保留其他单元格。但是,如果我运行一个脚本来删除“null”,它会重新格式化我的所有单元格,将日期和时间更改为小数。等等。是否有一种方法可以运行脚本并避免整个意外操作,如图纸范围的重新格式化?

您需要使用函数指定要使用的范围

var sheet = SpreadsheetApp.getActiveSheet();
var rng = sheet.getRange("A2:P")
var data = rng.getValues();
另外,您可以使用以下行清除整个工作表
sheet.clearContents()改为使用此

rng.clearContents()
这样,您只能清除
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);
}
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);
}