我目前使用以下基本脚本导入大量单元格(2500行,200列)。这些列中大约有20个是超链接,我希望保留其格式,但是在获取它们时当前会丢失。我确定这是因为getValues只能是Number,Boolean,Date或String类型。有人知道这里有解决方法吗?
function importOnOpen() {
var values = SpreadsheetApp.openById('ABCDEFGHIJKLMNOPQRSTUVWXYZ').
getSheetByName('exportSheet').getRange('A1:HZ2500').getValues();
SpreadsheetApp.getActive().getSheetByName('importSheet').
getRange(1,1,values.length,values[0].length).setValues(values);}
[一种选择是将getFormulas用于特定的超链接列,但是如果可能的话,我希望避免将公式完全拉到目标表中,以使其保持简洁。对每个超链接列也单独进行调用似乎很麻烦,尽管我想我可以将它们组合在一起。
我以前的解决方案是根本不使用脚本,而使用可以正常工作的importRange公式(另一方面,'query'函数也遇到相同的格式丢失问题)。我与importRange有关的问题有两个方面:1)它半连续获取数据,这损害了电子表格的性能; 2)由于“加载中...”问题,这是我需要将请求分解为大大小小的呼叫所致5个离散请求并将它们分组到一个arrayFormula中,以使其始终如一地工作-感觉很笨拙。
另一个可能的解决方案是setShowHyperlink(showHyperlink)函数吗?不知道它是如何工作的,我还没有看到有人使用它,所以我对此表示怀疑。只是一个想法。 https://developers.google.com/apps-script/reference/spreadsheet/range#setShowHyperlink(Boolean)
谢谢您的帮助!
要在同一电子表格中从一张工作表复制到另一张工作表,可以将Range.copyTo(destination, copyPasteType, transposed)
方法与PASTE_NORMAL
枚举器一起使用,以复制公式和文本。对于一个电子表格到另一个电子表格,可以使用Sheet.copyTo()
方法。
正如您已经推论的,getValues()
只能是数字,布尔值,日期或字符串类型,并且公式对象不能算作其中的任何一个。 getDisplayValues()
也有相同的问题,因为它不能采用基础公式。
查看CopyPasteType
的文档,您会发现使用PASTE_NORMAL
枚举会粘贴values, formulas, formats and merges
。
使用此功能,只需几次调用就可以一次性复制整张纸:
function copyAllTheThings() {
var ss = SpreadsheetApp.openById('<sheet-id>');
var range = ss.getSheetByName('exportSheet')
.getRange('A1:HZ2500');
var importTo = ss.getSheetByName('importSheet')
.getRange(range.getA1Notation());
range.copyTo(importTo, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
如果要将一个电子表格中的电子表格导入到另一个电子表格中,可以使用Sheet.copyTo()
方法。这将复制整个工作表,而不仅仅是复制范围,但是可以使用它,以便保留要复制工作表中的数据格式和公式:
function importOnOpen() {
var otherSS = SpreadsheetApp.openById('<spreadsheet-id-to-copy-to>');
var export = SpreadsheetApp.openById('<spreadsheet-id-to-copy-from>')
.getSheetByName('exportSheet');
export.copyTo(otherSS);
}
希望对您有帮助!
Range.copyTo(destination, copyPasteType, transposed)
Range.copyTo(destination, copyPasteType, transposed)
CopyPasteType
CopyPasteType
Range.getValues()