根据条件删除数据行
Delete row of data based on condition
我有一个电子表格,我想用它来存储项目时间表。我可以添加项目及其开始日期和完成前的长度——这在"项目"表上。这反映在一个单独的工作表上,根据设置的日期,每个项目的单元格都涂上特定的颜色——这就是"时间表"工作表。当我想删除项目时遇到问题。我想点击项目名称的单元格,从我创建的菜单中点击"删除项目",然后在"项目"表和"时间表"表上删除项目行。这个循环让我很困惑,我还没有完全理解它。我应该使用数组将项目名称存储在两张表上,然后使用它来相互引用,还是。。。???这是我迄今为止所拥有的。
function clearProject() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Projects');
var sourceRange = sourceSheet.getActiveRange();
var height = sourceRange.getValues().length;
var rowPosition = sourceRange.getRowIndex();
var targetSheet = ss.getSheetByName('Timeline');
var targetSheetValues = targetSheet.getRange(3, 1, 15, 49);
var targetProjectNames = targetSheet.getRange(3, 1, 15, 1).getValues();
var sourceProjectNames = sourceSheet.getRange(2, 1, 15, 1).getValues();
var targetHeight = targetSheet.getRange(3, 1, 15, 1).length;
var targetRowPosition = targetSheet.getRange(3, 1, 15, 1).getRowIndex();
for(var i=0; i > sourceProjectNames.length; i++){
if(i == targetProjectNames){
targetSheet.deleteRows(targetRowPosition, targetHeight);
}
else{
break;
}
}
//This deletes the row of the active cell
//ss.getActiveSheet().deleteRows(rowPosition, height);
Logger.log(i);
}
此外,如果你知道任何用通俗英语解释循环的资源,请给我一个链接。谢谢你的帮助!
EDIT:在"if"语句中将比较从=更改为==。编辑2:更改了for
循环中的比较。此外,还更改了if
语句的比较内容。
循环仍然无法正常工作。当我检查i
的日志时,我得到了0.0
。这是新代码。。。
function clearProject() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Projects');
var sourceRange = sourceSheet.getActiveRange();
var height = sourceRange.getValues().length;
var rowPosition = sourceRange.getRowIndex();
var targetSheet = ss.getSheetByName('Timeline');
var targetSheetValues = targetSheet.getRange(3, 1, 15, 49);
var sourceRangeValues = sourceSheet.getRange(2, 1, 15, 1);
var targetProjectNames = targetSheet.getRange(3, 1, 15, 1).getValues();
var sourceProjectNames = sourceSheet.getRange(2, 1, 15, 1).getValues();
var targetHeight = targetSheet.getRange(3, 1, 15, 1).length;
var targetRowPosition = targetSheet.getRange(3, 1, 15, 1).getRowIndex();
for(var i=0; i < sourceRangeValues.length; i++){
if( targetProjectNames[i][0] == sourceRange[i][0]){
targetSheet.deleteRows(targetRowPosition, targetHeight);
Logger.log(i);
}
}
//This deletes the row of the active cell
//ss.getActiveSheet().deleteRows(rowPosition, height);
Logger.log(i);
}
- 我认为这个循环根本不会运行一次
for(var i=0; i > sourceProjectNames.length; i++)
应该是
for(var i=0; i < sourceProjectNames.length; i++)
2.您正在将整数与不正确的的2-D数组进行比较
if(i == targetProjectNames)
相反,你应该做这样的事情。
if( targetProjectNames[i][0] == sourceProjectNames[i][0])
3.如果第一次比较失败,break;
语句将结束循环。所以完全去除的其他部分
这些都是我能提前注意到的。尝试一下,如果你仍然看到问题,请用更多信息编辑你的问题。
相关文章:
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 谷歌地图/Angular JS:地图更新并不总是反映数据,并且可以't删除标记
- 如何从表中的api中删除表tr数据comping
- 单击文本时删除文本框的默认数据
- 停止JSON.parse()从JSON字符串数据中删除尾随零
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- 使用AJAX传递的数据编辑XML文件-正在删除XML数据
- 如何删除Localstorage中的数据
- 如何在字符串中的值之前删除字符串中的动态数据?/ 使用 Lodash 的 _.trimStart 与动态数据
- 从服务器中删除映射数据,丢失订阅
- 如何根据某些条件向可编辑的jquery数据表添加或删除按钮
- jQuery:从数据属性中删除除前4个字符外的所有字符
- 使用nodeJS进行重复数据删除
- 改进JS重复数据删除函数的性能
- 我如何合并包含对象的JavaScript数组,重复数据删除并保留新对象
- 编辑对新添加的数据删除不起作用
- Typeahead.js预取和远程数据源之间的重复数据删除
- 在NodeJS中使用gridfs通过元数据删除文件
- Ajax javascript数据删除最后一次
- 如何使用来自其他数组的数据删除数组项