繁体   English   中英

基于模板创建新的 Google Sheet 并将数据从 Master Sheet 导出到新创建的表

[英]Creating a new Google Sheet based off a template and exporting data from Master Sheet to newly created sheets

我是我大学的一个委员会的一员,该委员会通过阅读不同的请求并相应地分配资金来分配 90,000 美元的资金。

我们通过填写一份 NOL 表格来完成分配,其中包含有关每个不同类别分配多少资金的信息。

所有这些信息都在一个母版表中。 我正在编写一个脚本,该脚本从母版上的 250 行中获取数据,并将其转换为 250 个独特的 Google 表格,其中包含从母版导入的信息,同时初始化每个谷歌表格以遵循特定模板。

在将新工作表的链接存储在我的主文档上之前,我被困在创建新工作表的部分,以将我的模板复制到新工作表上,更新新工作表上的值。

这是 Google Apps 脚本能够做到的吗? 我将粘贴我的(不完整的)代码。 目前链接被粘贴到主表上,但模板当前未导入,我链接到一张空白表(当它应该包含模板时)

另外,我的问题有更简单的解决方案吗? 也许我不需要创建新工作表,但我可以添加现有工作表(我会这样做,但这将是 250 张额外工作表)

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Justin's Analysis"); 
  var range = sheet.getRange("A1:P23");
  var nolSheet = ss.getSheetByName(['NOL']);
  var nolTemplateRange = nolSheet.getRange("A1:J33")
  var data = range.getValues();
  //console.log(sheet.getMaxRows())
  // data[2][15] = "Test"
  // range.setValues(data)
  for (i = 1; i<= 22; i++){// loop through NOL creation process through all rows of data. 
    var clubName = data[i][1];
    var input = "NOL" + i + clubName;
    console.log(input)
    var ssNew = SpreadsheetApp.create(input);
    var sheet = SpreadsheetApp.getActiveSheet();
    // var nolSheet = ss.getSheetByName(['NOL']);
    // let nolTemplateRange = nolSheet.getRange("A1: J33")
    //var rangeToCopy = sheet.getRange(1, 1, sheet.getMaxRows(), 5);
    nolTemplateRange.copyTo(sheet.getRange("A1:J33")); 

    
    nolSheet.copyTo(ssNew) // copies NOL into new spreadsheet
    
    //Copy Registration 
    let registration = data[i][9];
    let subscription = data[i][10];
    let incentive = data[i][11];
    let food = data[i][12];
    let other = data[i][13];
    let total = data[i][14];
    //Copy Subscription
    //Copy Incentives
    //Copy Food
    //Copy Supplies/Other

    // grab Copy of NOL into new created sheet. 
    // Input values from data into new sheet 
    // input new sheets URL into NOL row. 
    data[i][15] = ssNew.getUrl(); 

  }
  range.setValues(data)
  
}

问题是您无法使用复制功能将数据从一个谷歌工作表复制到另一个谷歌工作表。 在第二张纸上设置值之前,您需要在第一张纸上使用 getValues 函数。 我从这个 StackOverflow 问题中找到了答案: 使用脚本将 google 电子表格列从一个电子表格复制到另一个电子表格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM