正如标题中提到的,我必须停止这个脚本 从将所有公式转换为值并仅删除 A 列的重复行:A
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();
if (actualSheetName == "Feuille 1" ) {
if (e.range.getColumn() == 1){
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row[0] == newData[j][0]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}}}
在我看来,您正在尝试将其设置为onEdit((函数,因此这里是:
为了使此功能正常工作,您必须编辑 column1 中的单元格。(即您必须实际更改第一列中的一个单元格(
function onEdit(e) {
var sheet=e.range.getSheet();
//e.source.toast('flag1');
var data=sheet.getDataRange().getValues();
var newData = [];
var d=0;
if (sheet.getName()=="Sheet1") {
//e.source.toast('flag2');
if (e.range.columnStart ==1) {
for(var i=0;i<data.length;i++) {
if(newData.indexOf(data[i][0])==-1) {
newData.push(data[i][0]);
}else{
sheet.deleteRow(i+1-d++);
}
}
}
}
}
注意:您无法通过从脚本编辑器运行此脚本来以正常方式测试它。 必须提供事件对象。 我通常只是通过编辑适当的页面来调试它以生成 onEdit(( 触发器。
这不会删除空白行:
function onEdit(e) {
var sheet=e.range.getSheet();
//e.source.toast('flag1');
var data=sheet.getDataRange().getValues();
var newData = [];
var d=0;
if (sheet.getName()=="Sheet1") {
//e.source.toast('flag2');
if (e.range.columnStart ==1) {
for(var i=0;i<data.length;i++) {
if(data[i][0]=='')continue;
if(newData.indexOf(data[i][0])==-1) {
newData.push(data[i][0]);
}else{
sheet.deleteRow(i+1-d++);
}
}
}
}
}
工作代码在这里 ^_^ B4的公式是=max(A:A)+1
如果您删除一行或插入新行,它将在此处给出 B4 的值,即 A:A 列的最大数量 + 1,并删除 A:A 中重复的空行
function onEdit(e) {
var spreadsheet = SpreadsheetApp.getActive();
var ss = SpreadsheetApp.getActive()
var actualSheetName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
if (actualSheetName == "sheet 1" || actualSheetName == "sheet 2") {
if (e.range.getColumn() == 1) {
if (e.value == '' || e.value == null) {
var B1Value = SpreadsheetApp.getActiveSheet().getRange("B4").getValue();
var s = SpreadsheetApp.getActiveSheet();
var r = s.getActiveCell();
var row = r.getRow();
var time = new Date();
SpreadsheetApp.getActiveSheet().getRange('A' + row.toString()).setValue(B1Value);
}}}{
var sheet=e.range.getSheet();
var data=sheet.getDataRange().getValues();
var newData = [];
var d=0;
if (sheet.getName()=="PI-Analy attentes") {
if (e.range.columnStart ==1) {
for(var i=0;i<data.length;i++) {
if(newData.indexOf(data[i][0])==-1) {
newData.push(data[i][0]);
}else{
sheet.deleteRow(i+1-d++);
}}}}}}