我最近编写了我的第一个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(电子表格)并根据单元格为新电子表格提供自定义名称吗?
谢谢!
答案 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)