2016-12-07 94 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

您是否需要定期訪問排除的工作表?那麼隱藏它們,只計算未隱藏的牀單呢?在解決問題的同時,可以讓事情更有條理/可管理。既然我不完全知道你的用例,當然這可能不是正確的方向。