根据自定义模板生成新的电子表格/工作簿

时间:2019-08-01 07:40:17

标签: google-apps-script google-sheets

我想知道是否已经根据预先准备好的模板来创建/生成新的电子表格/工作簿。

我希望将其分配给一个按钮并显示在当前工作表中,因为我希望将一些信息从当前工作表中复制/复制到生成的工作表中。

是否还可以仅在所选范围内进行复制?例如,我选择A2:G2,然后将这些单元格复制到生成的单元格中的B5:H5。

我知道使用Create函数

function createnew() {
    var ssNew = SpreadsheetApp.create("SheetName");
    Logger.log(ssNew.getUrl());
}

但是我不知道如何使用自定义模板作为...模板。

这是我到目前为止得到的:

function addnewentries() {

 var ss = SpreadsheetApp.openByUrl("SheetURL");
 var sheet = ss.getSheetByName("SheetName");
 ss.copy("Copy of " + ss.getName());

 var sss = SpreadsheetApp.openById('SourceSheetID'); 
 var ss = sss.getSheetByName('SheetName');
 var range = ss.getRange('Range'); 
 var data = range.getValues();

 var tss = SpreadsheetApp.openById('TargetSheetID'); 
 var ts = tss.getSheetByName('SheetName');
 ts.getRange('Range').setValues(data); 

}

在将值粘贴到新复制的模板中时遇到麻烦。

1 个答案:

答案 0 :(得分:1)

  

您上面提出的所有要求都是可能的,但是您的帖子是   范围很广,可以解决多个问题。

因此,给您一些概括的答案:

  • 要复制模板,您可以
    • 使用copy()方法-这将为您的模板电子表格创建一个副本,并在模板中进行了修改时动态更新该副本,或者
    • 使用组合getValues()setValues(),它们将只为您选择的range静态复制模板中的值。
  • 您可以使用get.Range()选择起点和终点范围。
  • 一旦有了Apps脚本代码,就可以从菜单“工具”->“宏”中将其作为宏运行,但是如果要创建按钮,则可以使用Ui class来完成。
  • 从模板创建新电子表格后,您可以使用getUrl()方法检索其URL。
  

我鼓励您尝试根据这些要点编写一些代码,   遇到特定问题时发布问题。