javascript – Google App脚本 – 导入2个SpreadSheets之间的所有范围格式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Google App脚本 – 导入2个SpreadSheets之间的所有范围格式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3510字,纯文字阅读大概需要6分钟。
内容图文
![javascript – Google App脚本 – 导入2个SpreadSheets之间的所有范围格式](/upload/InfoBanner/zyjiaocheng/696/fecd1a27dbdb485f84d274488be33c2e.jpg)
更新:我写了for循环来修复合并的单元格和列宽问题.只需要一些边界帮助!
我正在努力将一系列单元格从一个Google电子表格复制到另一个Google电子表格.困难的部分是我试图保持所有格式.到目前为止,我已经能够保留所有格式,除了3个项目:单元格边框,各种合并单元格和列宽.任何帮助将不胜感激.提前抱歉,昨天刚刚发现Google App Script,我之前从未使用过JS.
function importTable() {
// Source spreadsheet
var srcSpreadSheet = SpreadsheetApp.openById("SpreadSheet-ID");
var scrSheet = srcSpreadSheet.setActiveSheet(srcSpreadSheet.getSheetByName("Sheet1"));
// Destination spreadsheet
var destSpreadSheet = SpreadsheetApp.openById("SpreadSheet-ID");
var destSheet = destSpreadSheet.setActiveSheet(destSpreadSheet.getSheetByName("Test"));
destSheet.clear();
// Get data and formatting from the source sheet
var range = scrSheet.getRange(1, 2, 24, 16);
var values = range.getValues();
var background = range.getBackgrounds();
var banding = range.getBandings();
var mergedRanges = range.getMergedRanges();
var fontColor = range.getFontColors();
var fontFamily = range.getFontFamilies();
var fontLine = range.getFontLines();
var fontSize = range.getFontSizes();
var fontStyle = range.getFontStyles();
var fontWeight = range.getFontWeights();
var horAlign = range.getHorizontalAlignments();
var textStyle = range.getTextStyles();
var vertAlign = range.getVerticalAlignments();
// Put data and formatting in the destination sheet
var destRange = destSheet.getRange(1, 2, 24, 16);
destRange.setValues(values);
destRange.setBackgrounds(background);
destRange.setFontColors(fontColor);
destRange.setFontFamilies(fontFamily);
destRange.setFontLines(fontLine);
destRange.setFontSizes(fontSize);
destRange.setFontStyles(fontStyle);
destRange.setFontWeights(fontWeight);
destRange.setHorizontalAlignments(horAlign);
destRange.setTextStyles(textStyle);
destRange.setVerticalAlignments(vertAlign);
// Iterate through to put merged ranges in place
for (var i = 0; i < mergedRanges.length; i++) {
destSheet.getRange(mergedRanges[i].getA1Notation()).merge();
}
// Iterate through to get the column width of the source destination
for (var i = 1; i < 18; i++) {
var width = scrSheet.getColumnWidth(i);
destSheet.setColumnWidth(i, width);
}
// Iterate through to get the row heighth of the source destination
for (var i = 1; i < 27; i++){
var height = scrSheet.getRowHeight(i);
destSheet.setRowHeight(i, height);
}
}
解决方法:
这个解决方法怎么样?在此变通方法中,使用Class Sheet的copyTo()和Class Range的copyTo().我认为你的情况有几个答案.所以请把它想象成其中之一.
该脚本的流程如下.
>使用Class Sheet的copyTo()复制包含要复制的范围的工作表.
>使用类范围的copyTo()复制值,公式,格式以及从复制的工作表到目标工作表的合并.
>此时,使用要复制的范围.
>使用Class Range的copyTo()将列宽从复制的工作表复制到目标工作表.
>删除模板表.
示例脚本:
function importTable2() {
// Source
var sourceSheet = SpreadsheetApp.openById("SpreadSheet-ID").getSheetByName("Sheet1");
var sourceRange = sourceSheet.getRange(1, 2, 24, 16);
// Destination
var destSS = SpreadsheetApp.openById("SpreadSheet-ID");
var destSheet = destSS.getSheetByName("Test");
var destRange = destSheet.getRange(1, 2, 24, 16);
destSheet.clear();
// Copy
var copiedsheet = sourceRange.getSheet().copyTo(destSS);
copiedsheet.getRange(sourceRange.getA1Notation()).copyTo(destRange);
copiedsheet.getRange(sourceRange.getA1Notation()).copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
destSS.deleteSheet(copiedsheet);
}
注意 :
>在运行此脚本之前,请设置SpreadSheet-ID.
参考文献:
> copyTo() of Class Sheet
> copyTo() of Class Range
如果我误解了你的问题,请告诉我.我想修改它.
内容总结
以上是互联网集市为您收集整理的javascript – Google App脚本 – 导入2个SpreadSheets之间的所有范围格式全部内容,希望文章能够帮你解决javascript – Google App脚本 – 导入2个SpreadSheets之间的所有范围格式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。