2016-12-07 49 views
0

更新:通过移至Excel解决。 :(如何根据表格当前日期确定总数据

我有一个谷歌电子表格,对每周的页面。我目前使用下面的自定义函数计算的时间总量的名字出现在所有表。

function COUNTALLSHEETS(range, countItem, excluded) { 
try { 
    var count = 0, 
     ex = (excluded) ? Trim(excluded.split()) : false; 
    SpreadsheetApp.getActive() 
     .getSheets() 
     .forEach(function (s) { 
      if (ex && ex.indexOf(s.getName()) === -1 || !ex) { 
       s.getRange(range) 
        .getValues() 
        .reduce(function (a, b) { 
         return a.concat(b); 
        }) 
        .forEach(function (v) { 
         if (v === countItem) count += 1; 
        }); 
      }; 
     }); 
    return count; 
} catch (e) { 
    throw e.message; 
} 
} 
function Trim(v) { 
return v.toString().replace(/^\s\s*/, "") 
.replace(/\s\s*$/, ""); 
} 

当我运行使用 =COUNTALLSHEETS("$A$1:$G$40", A2, "Rosters") 它返回穿过除了那些由函数的第三个参数中排除的所有片材的值的功能。在这种情况下,片材题为“名册”不计算在内。

我的问题是每周,我必须更新不包含的表单uded。我现在将所有的日期排除在日期之外。因此,而不是早期的短调用该函数,它看起来更像

=COUNTALLSHEETS("$A$1:$G$40", A2, "Rosters, 5-9Dec, 12-16Dec, ... etc.") 

有什么办法修改代码本身或函数调用自动排除未来表?我期待拉取当前日期,将其与表格标题进行比较(如果需要,可以更改为适合某种格式),并排除将来的任何日期。

请让我知道任何想法;如果我需要共享电子表格的副本,我可以。

+0

如果您获得了所有表格名称;然后将表格名称转换为可以转换为日期的字符串;然后将日期与今天的日期进行比较可以发挥作用吗?所以,你会得到所有的表格名称,循环遍历它们,将表格名称解析为一个日期,并将日期与今天的日期进行比较。然后进行任何你想要的测试,并且处理该表格,或者编辑表格名称列表以包括或排除。 –

+0

@SandyGood:这可以工作。我知道Google表格有一种方法可以确定日期是之前还是之后。我只需要深入了解这些API。 –

+0

日期比较可以在JavaScript内完成。 –

回答

0

您是否需要定期访问排除的工作表?那么隐藏它们,只计算未隐藏的床单呢?在解决问题的同时,可以让事情更有条理/可管理。既然我不完全知道你的用例,当然这可能不是正确的方向。