如标题中所述,我必须停止此脚本 从将所有公式转换为值并仅删除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);
}}}
答案 0 :(得分:1)
在我看来,您正在尝试使它成为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++);
}
}
}
}
}
答案 1 :(得分:0)
工作代码在这里^ _ ^
B4的公式是char operator[](ptrdiff_t pos) const { return m_str[pos]; }
char& operator[](ptrdiff_t pos) { return m_str[pos]; }
如果您删除一行或插入新行,它将在此处给出B4的值,即A:A列的最大数量+ 1,并删除A:A中重复的空行
=max(A:A)+1