function - 删除行 - Google Apps 脚本“找不到方法 deleteRow((class))”
问题描述
这是我的功能:
function deleteContact(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var wsname = ss.getRangeByName("contactName").getValue();
var wscl = ss.getSheetByName('Connection List');
var wsRange = wscl.getRange("A1:A").getValues();
for(var i = 0; i<wsRange.length;i++){
if(wsRange[i][0] == wsname){
var row = i+1; //This gets the row number
}
var ui = SpreadsheetApp.getUi();
var response = ui.alert("Are You Sure You Want To Delete " + wsname, ui.ButtonSet.YES_NO);
if (response == ui.Button.YES) {
var delr = wscl.deleteRow(row);
}
}
}
我能够获取行号,但是一旦单击“是”按钮,就会收到此错误:
找不到方法 deleteRow((class))。
有什么建议么?我希望函数删除它找到的行。
解决方案
尝试这个:
function deleteContact(){
var ss=SpreadsheetApp.getActive();
var wsname=ss.getRangeByName("contactName").getValue();
var wscl=ss.getSheetByName('Connection List');
var wsValues=wscl.getRange(1,1,wscl.getLastRow(),1).getValues();
var d=0;
for(var i=0;i<wsValues.length;i++){
if(wsValues[i][0]==wsname){
var row=i+1-d; //This gets the row number
var ui=SpreadsheetApp.getUi();
var response=ui.alert("Are You Sure You Want To Delete " + wsname, ui.ButtonSet.YES_NO);
if (response == ui.Button.YES) {
wscl.deleteRow(row);
d++;
}
}
}
}
当您删除行时,留下的行每次都会向上移动一行,但数据是在删除行之前获取的,因此用于从数据数组计算地址的索引必须通过已删除的行数进行补偿.
你也有一些应该在范围内的行,if(wsValues[i][0]==wsname){
而不是所以我把它们移进去了,现在它只删除了具有正确名称的行。
推荐阅读
- android - 共享首选项给出错误 - 使用示例
- apache-storm - What is the difference between using LocalCluster and StormSubmitter to create topology in Apache Storm?
- c++ - Single header file for exporting and C and C++ APIs
- sql-server - SQL Server 备份无法恢复:媒体集有 2 个系列,但只提供了 1 个。必须提供所有成员
- python-3.x - 如何删除openpyxl中的excel行?
- sql-server - What will be equivalent PerfMon counters for SQL Response Time?
- javascript - How can I make my css files asynchronous?
- javascript - Bootstrap - 图像到 gif 到模态
- python - Processing Xray Images (.dcm files) using pydicom (could not find SliceThickness Attribute)
- jquery - DataTables - 单击功能在第一次单击时触发一次,在第二次单击时触发两次,在第三次单击时触发三次,等等