google-apps-script - 在从多个选项卡创建单独的电子表格时复制和应用条件格式
问题描述
我正在使用以下帖子中的代码(如何将具有 20 个选项卡的单个电子表格拆分为单独的工作表(不同的文件)</a>)从具有多个选项卡/工作表的单个电子表格创建单独的文档。
这已经比较成功了,但是我一直无法复制格式,既不是单元格的宽度和高度,也不是单元格C2中的两个条件格式规则。为此,我在这篇文章中使用了代码:
Google脚本将电子表格中的工作表复制到新电子表格并在特定单元格后命名新电子表格
不幸的是,该代码只复制值而不是公式。
我尝试使用此端口的代码,但无济于事:
是否可以在从多个选项卡创建单独的电子表格时复制和应用条件格式?
这是 mu 当前代码:
function migrateSheetsToFiles() {
var mySheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var toFolderName = 'ScreenerUserFolder';
var i;
for(i in mySheets){
var currentSheet = mySheets[i];
var oldData = currentSheet.getDataRange().getValues();
var oldDataFormula = currentSheet.getRange("A2").getFormula();
var oldDataFormatting = currentSheet.getRange("C2").getFormula();
var newFile = SpreadsheetApp.create(currentSheet.getName());
var newId = newFile.getId();
var newSheet = newFile.getSheets()[0]
newSheet.getRange(1,1,oldData.length,oldData[0].length).setValues(oldData);
newSheet.getRange(2,1,oldData.length,oldData[0].length).setFormula(oldDataFormula);
newSheet.deleteRow(4).deleteColumn(3).deleteRow(3).deleteColumn(2);
newSheet.setName(newFile.getName());
if(toFolderName != ''){
var fileInDrive = DriveApp.getFileById(newId);
fileInDrive.makeCopy(fileInDrive.getName(),DriveApp.getFoldersByName(toFolderName).next());
fileInDrive.setTrashed(true);
};
};
}
解决方案
如果要复制包含所有公式和格式的工作表 - 使用copyTo()
样本:
function migrateSheetsToFiles() {
var mySheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
// var toFolderName = 'ScreenerUserFolder';
var i;
for(i in mySheets){
var currentSheet = mySheets[i];
var newFile = SpreadsheetApp.create(currentSheet.getName());
currentSheet.copyTo(newFile);
var newId = newFile.getId();
if(toFolderName != ''){
...
}
};
}
注意力
您的源文件在同一个 Apps 脚本项目中包含多个代码文件,其函数名为migrateSheetsToFiles()
.
请注意,您不能在一个 Apps 脚本项目中拥有多个同名函数 - 即使这些函数位于不同的 .gs 文件中。
我认为这就是您在代码中执行的修改没有通过的原因。
推荐阅读
- reactjs - 状态变量的反应问题 - 数字与字符串
- c++ - 如何最好地让用户重新定义类方法?
- asp.net-core - 发生错误时,我的 asp.net 核心应用程序未写入标准输出日志
- wordpress - 显示离线状态的 Wordpress 页面
- mysql - 3 或 4 分钟不活动后出现错误“odbc 驱动程序不支持请求的属性”
- ray - 我们如何在训练期间在 RLlib 中打印动作分布?
- javascript - Codeigniter:上传调整大小为 300x300 的图像(保持比例被提及为错误).. 但矩形图像变窄
- mysql - 在 MySql 中为不同用户存储相同的唯一编号
- image - Matlab - 创建不同大小子图的图形
- css - 如何将 toastr-rails gem 添加到 Rails 6 项目?