根据 1 行输入生成多行数据 - Google Sheets
Generate multiple rows of data based on 1 row input - Google Sheets
我正在尝试在后端的 Google 工作表仪表板中创建自动化,以便我可以轻松地扩展我正在创建的特定报告。
基本上,我想根据在某个地方完成的 1 行输入生成多行数据。这基本上是关于每月或每季度重复的经常性收入和经常性支出。所以多行的生成应该是根据"Recurring months time"、"Recurring income"和"Recurring expense"。最主要的是在这里也添加日期——根据它不断重复的时间。循环和重复应该持续到 2019-2020 年等决定的日期(比如 2019 年 1 月 1 日)
下面的详细示例,输入 table 由个人完成 - 而输出 table 由脚本、代码和公式自动生成
希望这能清楚地解释我的问题陈述。我认为我们必须在此处使用 "Google Apps Script" 从输入语句创建循环。
任何解决此问题的方法和帮助都将不胜感激。
这是一些代码,应该可以解决问题。
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() 方法或电子表格工具对结果进行排序。
我正在尝试在后端的 Google 工作表仪表板中创建自动化,以便我可以轻松地扩展我正在创建的特定报告。
基本上,我想根据在某个地方完成的 1 行输入生成多行数据。这基本上是关于每月或每季度重复的经常性收入和经常性支出。所以多行的生成应该是根据"Recurring months time"、"Recurring income"和"Recurring expense"。最主要的是在这里也添加日期——根据它不断重复的时间。循环和重复应该持续到 2019-2020 年等决定的日期(比如 2019 年 1 月 1 日)
下面的详细示例,输入 table 由个人完成 - 而输出 table 由脚本、代码和公式自动生成
希望这能清楚地解释我的问题陈述。我认为我们必须在此处使用 "Google Apps Script" 从输入语句创建循环。
任何解决此问题的方法和帮助都将不胜感激。
这是一些代码,应该可以解决问题。
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() 方法或电子表格工具对结果进行排序。