0

我正在尝试在 Google 表格仪表板的后端中创建自动化,以便我轻松扩展我正在创建的某个报告。

基本上,我想根据在某个地方完成的 1 行输入生成多行数据。这基本上是关于每月或每季度重复的经常性收入和经常性费用。所以多行的生成应该基于“经常性月份时间”、“经常性收入”和“经常性费用”。主要的是在这里也添加日期 - 通过它不断重复的时间量。循环和重复应该一直持续到 2019-2020 等确定的日期。(比如 2019 年 1 月 1 日)

下面的详细示例,输入表由个人完成 - 而输出表由脚本、代码和公式自动生成

示例输入和输出表


希望这能清楚地解释我的问题陈述。我认为我们将不得不在这里使用“Google Apps 脚本”从输入语句创建循环。

任何解决此问题的方法和帮助将不胜感激。

4

1 回答 1

1

这是一些代码,它应该可以解决问题。

function generateReccuringExpenses(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var inputSheet = ss.getSheetByName("Input Table");
  var outputSheet = ss.getSheetByName("Output Table");
  var endYear = 2020;

  // We considere your data to be on a sheet with a header, starting on A1 cell
  var data = inputSheet.getRange(2, 1, inputSheet.getLastRow()-1, inputSheet.getLastColumn()).getValues();

  for(var i = 0; i < data.length; i++){

    var row = data[i];

    if(row[3] > 0){

      var elements = new Array();
      var d = new Date(row[0]);

      while(d.getFullYear() < endYear){

        var test = d.getFullYear();
        var month = d.getMonth() +1;
        var dateString = month+"/"+d.getDate()+"/"+d.getFullYear();
        var newRow = [dateString, row[1],row[2]];
        elements.push(newRow);

        var n = d.getMonth() + row[3];

        if(n > 11){

          d.setMonth(n -11);
          d.setYear(d.getYear() + 1);

        }
        else{

          d.setMonth(n);

        }

      }

      var outputRange = outputSheet.getRange(outputSheet.getLastRow()+1, 1, elements.length, outputSheet.getLastColumn());
      outputRange.setValues(elements);

    }

  }

  var range = outputSheet.getRange(2, 1, outputSheet.getLastRow()+1, outputSheet.getLastColumn());
  range.sort(1); // Sort by date (column 1)

}

您可以使用 Range.sort() 方法或电子表格工具对结果进行排序。

于 2017-04-24T13:25:51.133 回答