copyTo(destination,copyPasteType,transposed)停止执行其余功能 [英] copyTo(destination, copyPasteType, transposed) stops rest of function from executing

查看:40
本文介绍了copyTo(destination,copyPasteType,transposed)停止执行其余功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用函数 copyTo(destination,copyPasteType,已转置)将一个文件中的工作表复制到另一个文件中的另一工作表,同时保持所有内容(包括列宽)相同.仅使用函数 copyTo(destination),我的代码即可工作,并且我将所需的所有内容保存在不同的文件中,但列宽除外.但是,当我尝试将 copyTo copyPasteType 参数一起使用时,工作表将被完美地复制(具有正确的列宽),但是任何后续代码都不会运行.为什么会发生这种情况,我该如何解决?

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
}

我还在Google+中提出了这个问题

推荐答案

我没有找到答案,为什么带有三个参数的copyTo阻止了我函数的其余部分执行,但是我找到了另一种复制列的方法宽到可以正常工作的新电子表格.

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
}

这篇关于copyTo(destination,copyPasteType,transposed)停止执行其余功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆