JSFiddle - React, Tailwind, and code Playground

JavaScript

/**
 Get the contents of cell given column name and row number and sheet data range.
 */
function getCell(colName, row, data) {
  data = data.getValues();
  var col = data[0].indexOf(colName);
  if (col != -1) {
    return data[row-1][col];
  }
}


/**
 Sum all transactions across sheets that match category and date range.
 
 @param category_name The category to filter on
 @param date_min Minimum date in range to filter
 @param date_max Maximum Date in range to filter
 @param [time] Optional update time/date
 @return The sum of transactions that match input criteria
 @customfunction
 */
function sumCategory(category_name, date_min, date_max, time) {
  //Browser.msgBox("sum_category( "+ category_name +" "+ date_min +" "+ date_max + " )" );
  
  var date_min = new Date(date_min);
  var date_max = new Date(date_max);
  var date_month = date_min.getMonth();
  var date_year = date_min.getYear();
  
  var sheets = ['Account1', 'Account2'];
  
  var column_name = { 
    Date:   "Date",
    Category: "Category",
    Amount: "Amount"
  };
    
  var msg = "";
  var sum = 0.0;
  var spreadsheet = SpreadsheetApp.getActive();
 
  // Number of seconds before the cache expires.
  var cache_time = 120;
 
  var cache = CacheService.getScriptCache();
  
  // Build the cache key with requested category_year_month
  var cache_key = category_name + '_' + date_year.toString() + '_' + date_month.toString();
  
  // If we have this category cached, then return it...
  var cached = cache.get(cache_key);
  if (cached != null) {
    return Number(cached);
  }
  
  // Category sum for cache
  var cat_sum = { }; 
  
  // Loop through all sheets, and all transactions building the category sum cache
  for(var x = 0; x < sheets.length; x++){  
    var s = sheets[x];
    //Browser.msgBox("Working on sheet: " + s);
    var cur_sheet = spreadsheet.getSheetByName(s);
 
    // Get data range for whole sheet 
    var data =  cur_sheet.getDataRange();
    var num_rows = data.getNumRows();
    var...