问题
I'm trying to use the function copyTo(destination, copyPasteType, transposed)
to copy a sheet in one file to another sheet in a different file while keeping everything, including column width, the same. Using just the function copyTo(destination)
, my code works and I get everything I want in a different file, EXCEPT the column width. However, when I try and use copyTo
with the copyPasteType
argument, the sheet is copied perfectly (with the correct column widths), BUT any subsequent code isn't run. Why is this happening, and how can I fix it?
function createSpreadsheet(foldername) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Sheet1');
var folder = DriveApp.getFolderById(foldername);
RESPONSE = FileName(); //a function that prompts the user for a filename
//creates a new spreadsheet which has two sheets, and deletes the "Copy of Sheet1" sheet
var newSpreadsheet = SpreadsheetApp.create(RESPONSE);
var newsheet = newSpreadsheet.getSheetByName('Sheet1');
var copysheet = sheet.copyTo(newSpreadsheet);
sheet.copyTo(newSpreadsheet, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
//when using CopyPasteType argument, everything from here down isn't run
copysheet.getDataRange().copyTo(newsheet.getDataRange());
copysheet.getDataRange().copyTo(newsheet.getDataRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
newSpreadsheet.deleteSheet(copysheet);
var newSpreadsheetID = newSpreadsheet.getId();
var file = DriveApp.getFileById(newSpreadsheetID);
folder.addFile(file);
DriveApp.removeFile(file);
clearYellow(); //clears contents of yellow cells
clearGray(); //clears contents of gray cells
}
I've also asked this question in Google+
回答1:
I didn't find an answer as to why the copyTo with three arguments stopped the rest of my function from executing, but I found another way to copy the column widths over to the new spreadsheet that works.
function createSpreadsheet(foldername) {
var oldspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var oldsheet = oldspreadsheet.getSheetByName('Sheet1');
var folder = DriveApp.getFolderById(foldername);
RESPONSE = FileName();
//creates a new spreadsheet which has two sheets, and deletes the "Copy of Sheet1" sheet
var newSpreadsheet = SpreadsheetApp.create(RESPONSE);
var newsheet = newSpreadsheet.getSheetByName('Sheet1');
var copysheet = oldsheet.copyTo(newSpreadsheet);
copysheet.getDataRange().copyTo(newsheet.getDataRange());
var numberOfColumns = oldsheet.getLastColumn();
for (columnNumber = 1; columnNumber <= numberOfColumns; columnNumber++){
var Width = oldsheet.getColumnWidth(columnNumber);
newsheet.setColumnWidth(columnNumber, Width);
};
newSpreadsheet.deleteSheet(copysheet);
var newSpreadsheetID = newSpreadsheet.getId();
var file = DriveApp.getFileById(newSpreadsheetID);
folder.addFile(file);
DriveApp.removeFile(file);
clearYellow(); //clears contents of yellow cells
clearGray(); //clears contents of gray cells
}
来源:https://stackoverflow.com/questions/51052408/copytodestination-copypastetype-transposed-stops-rest-of-function-from-execu