Google apps script Google工作表从filterArray中排除行
我希望你能帮我解决一个问题 我有一个代码,它根据第10列中的时间将行从一个选项卡复制到另一个选项卡。我从这里得到了代码,并根据我的需要进行了修改。作为这段代码的一部分,我有第二个选项卡,其中包含类似的信息,它只需要从中删除相同的行。但是,当它从第二个选项卡开始并状态为“在对象中找不到函数getTime…”时,我收到一条错误消息。我猜这是因为我的标题栏在第10列中没有时间。有没有办法从filterarray中排除行Google apps script Google工作表从filterArray中排除行,google-apps-script,google-sheets-query,Google Apps Script,Google Sheets Query,我希望你能帮我解决一个问题 我有一个代码,它根据第10列中的时间将行从一个选项卡复制到另一个选项卡。我从这里得到了代码,并根据我的需要进行了修改。作为这段代码的一部分,我有第二个选项卡,其中包含类似的信息,它只需要从中删除相同的行。但是,当它从第二个选项卡开始并状态为“在对象中找不到函数getTime…”时,我收到一条错误消息。我猜这是因为我的标题栏在第10列中没有时间。有没有办法从filterarray中排除行 function moveRows() { var ss = Sprea
function moveRows() {
var ss = SpreadsheetApp.getActive();
var s = ss.getSheetByName("Today");
var sr = ss.getSheetByName("Request History");
var target = ss.getSheetByName("Archive");
var today = new Date().getTime()
var val = filterArray(s.getDataRange()
.getValues());
for (var len = val.length - 1, i = len; i >= 3; i--) {
if (val[i][10].getTime() < today) {
target.appendRow(val[i])
s.deleteRow(i + 1)
}
}
var val = filterArray(sr.getDataRange()
.getValues());
for (var len = val.length - 1, i = len; i >= 0; i--) {
if (val[i][10].getTime() < today) {
sr.deleteRow(i + 1)
}
}
}
function filterArray(array) {
var filteredArray = [];
array.forEach(function (r) {
if (r[10] !== '') {
filteredArray.push(r);
}
});
return filteredArray;
var cell = s.getRange("A2:A2");
cell.setFormula("=query('Request History'!A:F)");
}
函数moveRows(){
var ss=SpreadsheetApp.getActive();
var s=ss.getSheetByName(“今天”);
var sr=ss.getSheetByName(“请求历史”);
var target=ss.getSheetByName(“存档”);
var today=new Date().getTime()
var val=filterArray(s.getDataRange()
.getValues());
对于(var len=val.length-1,i=len;i>=3;i--){
if(val[i][10].getTime()<今天){
target.appendRow(val[i])
s、 删除行(i+1)
}
}
var val=filterArray(sr.getDataRange()
.getValues());
对于(var len=val.length-1,i=len;i>=0;i--){
if(val[i][10].getTime()<今天){
高级删除行(i+1)
}
}
}
函数过滤器阵列(阵列){
var filteredArray=[];
array.forEach(函数(r){
如果(r[10]!=''){
过滤光线。推(r);
}
});
返回过滤器阵列;
var单元格=s.getRange(“A2:A2”);
cell.setFormula(“=query('Request History'!A:F)”);
}
如蒙协助,将不胜感激。我不是一个程序员,但通常会设法改变代码,以适应我的需要时,玩它
谢谢,
Sjoerd如果您的目标是在不存在日期/时间值时不让脚本崩溃或删除行,则可以“捕获”您正在接收的异常(错误),在这种情况下,脚本将在收到此错误后直接移动到下一行 这比更改“filterArray”跳过一个选项卡的标题行而不跳过另一个选项卡更简单
for (var len = val.length - 1, i = len; i >= 0; i--) {
try{
if (val[i][10].getTime() < today) {
sr.deleteRow(i + 1)
}
}catch(error){
Logger.log('Caught an error processing item '+i+': '+error);
}
}
for(var len=val.length-1,i=len;i>=0;i--){
试一试{
if(val[i][10].getTime()<今天){
高级删除行(i+1)
}
}捕获(错误){
Logger.log('捕获到处理项'+i+'时出错:'+error);
}
}
请参见此处的try/catch文档:
不客气,很乐意帮忙!请“接受”我的回答,这样问题就解决了