复制活动工作表中的范围,使用自定义名称创建新电子表格,粘贴范围

时间:2017-08-22 22:06:19

标签: google-apps-script google-sheets

我最近编写了我的第一个Google Apps脚本,该脚本制作了电子表格的副本(包括该电子表格中的所有标签),并将其放入用户驱动器中的特定文件夹中。根据原始电子表格中的单元格值重命名副本。这是我的脚本,供参考:

function copyDocument() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // Get current active spreadsheet.
var id = ss.getId(); // Get current active spreadsheet ID.
var sstocopy = DriveApp.getFileById(id); // Get spreadsheet with DriveApp.
var sheet = ss.getActiveSheet(); // Get current active sheet.
var sheet_name = sheet.getRange("B1").getValue(); // Get the value of cell B1, used to name the new spreadsheet.
var folder_name = sheet.getRange("C23").getValue(); // Get the target folder ID.
var folder = DriveApp.getFolderById(folder_name); // Get the ID of the folder where you will place a copy of the spreadsheet.
sstocopy.makeCopy(sheet_name,folder); // Make a copy of the spreadsheet in the destination folder.
}

这个脚本有效,但我被要求修改它,因为我写的脚本是复制不必要的标签和数据,导致用户混淆。

新脚本应制作特定工作表中特定范围的副本,创建新电子表格,然后将该范围粘贴到其中。它还应该在范围内的单元格值之后命名。

但是,我遇到的唯一一种将工作表专门复制到新电子表格中的方法是copyTo(电子表格)。但是,“Google Apps脚本指南”指定"复制的表格将被命名为“原始名称”的副本'"默认情况下。

我希望能够在特定单元格后重命名复制的工作表。我的问题是,我可以使用copyTo(电子表格)并根据单元格为新电子表格提供自定义名称吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要从特定工作表中获取数据以复制到使用的变量:

def func1():
    global func2  # put it in global scope
    def func2():
        print("Hello")

然后,您需要创建一个新的空文件并制作一个名称相同的工作表

var sourceSheet = ss.getSheetByName("Sheet1");
var sourceData = sourceSheet.getDataRange().getValues();
var originalRangeNotation = sourceSheet.getDataRange().getA1Notation();

然后将保存数据中的内容添加到新文件中。由于insertSheet使新工作表成为活动工作表,我们使用:

var ssNew = SpreadsheetApp.create("My New File Name");
ssNew.insertSheet('My New Sheet');

答案 1 :(得分:0)

感谢。我最终使用它来代替sstocopy.makeCopy()

folder.addFile()
new_sheet.getActiveSheet().getRange("X:Y").setValues(sheet.getRange("X:Y").getValues())
DriveApp.getRootFolder().removeFile(temp)