copyTo (destination, copyPasteType, transposed) останавливает выполнение остальных функций - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь использовать функцию copyTo(destination, copyPasteType, transposed), чтобы скопировать лист из одного файла в другой лист в другом файле, сохраняя все, включая ширину столбца, одинаковым. Используя только функцию copyTo(destination), мой код работает, и я получаю все, что хочу, в другом файле, КРОМЕ ширины столбца. Однако, когда я пытаюсь использовать copyTo с аргументом copyPasteType, лист копируется идеально (с правильной шириной столбца), НО любой последующий код не запускается. Почему это происходит, и как я могу это исправить?

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
}

Я также задал этот вопрос в Google +

1 Ответ

0 голосов
/ 27 июня 2018

Я не нашел ответа на вопрос, почему copyTo с тремя аргументами остановил выполнение остальной части моей функции, но я нашел другой способ скопировать ширину столбцов в новую электронную таблицу, которая работает.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...