【发布时间】:2021-02-20 21:33:50
【问题描述】:
我需要准备一张空工作表,以设置为 SetValues 的大小。
详情
我正在尝试使用 clueless 中的 this nice routine 来制作包含所有选项卡的 google 工作表文件的仅值副本。 (最终我会按计划运行它并将其下载到 Microsoft 云驱动器,以便我可以从 Power BI 实时访问)。 Clueless 使用硬编码参数 TL 和 BR 来表示范围的左上角和右下角。 Clueless 首先删除目标工作表中具有匹配名称的任何选项卡,从而从一个新选项卡开始。
不幸的是,我的源工作表选项卡的范围并不完全一致。有些比 TL BL 大,有些比 TL 小。因此,如果我增加或减少 TL 和 BL 全局变量,我会收到“...超出范围...”错误或“数据中的行数与范围内的行数不匹配。” p>
我该如何解决这个问题?有没有办法在 SetValues 之前准备目标工作表,方法是在执行 SetValues 之前使其大小与源工作表 GetDataRange 大小匹配?
谢谢!
function update_view(dup_id="<spreadsheet_id>", TL="A1", BR="BE900") {
// Open current Sheet
var ss = SpreadsheetApp.getActiveSpreadsheet()
// Supply a duplicate google doc ID. This document will be exported to excel
var ds = SpreadsheetApp.openById(dup_id)
// UI element for notifying in the google sheets
var ui = SpreadsheetApp.getUi()
//Copy each sheet one by one
var sheets = ss.getSheets();
for (i=0; i<sheets.length; i++) {
src_sheet = sheets[i];
sheet_name = src_sheet.getName();
Logger.log(sheet_name);
// If same sheet exists in the destination delete it and create an empty one
dst_sheet = ds.getSheetByName(sheet_name);
if (dst_sheet != null) {
ds.deleteSheet(dst_sheet)
}
dst_sheet = ds.insertSheet(sheet_name);
//set column width correctly
for(j=1; j<=src_sheet.getLastColumn(); j++){
dst_sheet.setColumnWidth(j, src_sheet.getColumnWidth(j))
}
src_range = src_sheet.getRange(TL + ":" + BR);
dst_range = dst_sheet.getRange(TL + ":" + BR);
//Note: DisplayValues is set as Values, formulas are removed in dup sheet
dst_range.setValues(src_range.getDisplayValues());
//Nice to haves for formatting
dst_range.setFontColors(src_range.getFontColors());
dst_range.setFontStyles(src_range.getFontStyles());
dst_range.setBackgrounds(src_range.getBackgrounds());
dst_range.setHorizontalAlignments(src_range.getHorizontalAlignments());
dst_range.setVerticalAlignments(src_range.getVerticalAlignments());
dst_range.setWraps(src_range.getWraps());
dst_contents_range = dst_sheet.getDataRange();
dst_contents_range.setBorder(true, true, true, true, true, true);
}
//Completed copy, Now open the dup document and export.
ui.alert("Backup Complete, Please open " + dup_id + " sheet to view contents.")
}
【问题讨论】:
标签: google-apps-script google-sheets