如何为 GSheets 正确编写脚本,以无误地复制和粘贴不同的范围?
How do I write a script correctly for GSheets that copy and pastes different ranges without errors?
我有一个脚本可以很好地复制和粘贴从示例 Sheet1 范围:A1:C200
到 Sheet2 范围:A1:C200
的范围。我的问题是我的行数在 200 到 3000 行之间不断变化,具体取决于我每天导入到电子表格中的数据,目前我不得不不断地手动写入每个范围。
是否可以编写一个脚本,每次都适应可变的行范围,并将整个范围从列 A,B,C
复制到可用数据的最后一行,如范围公式:A1:C
?
请参阅脚本示例。
原剧本:(有效)
function copy() {
var OriginalRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet1').getRange("A1:C200");
var DestinationRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet2').getRange("A1:C200");
DestinationRange.setValues(OriginalRange.getValues());
}
理想变量范围脚本:(异常:行数不匹配错误)
function copy() {
var OriginalRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet1').getRange("A1:C");
var DestinationRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet2').getRange("A1:C");
DestinationRange.setValues(OriginalRange.getValues());
}
您只需要 getLastRow() 即可获取包含内容的最后一行。您只需要稍微重构一下代码:
function copy() {
var OriginalSheet = SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet1')
var OriginalRange=OriginalSheet.getRange("A1:C"+OriginalSheet.getLastRow());
var DestinationSheet = SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet2')
var DestinationRange=DestinationSheet.getRange("A1:C"+OriginalSheet.getLastRow());
DestinationRange.setValues(OriginalRange.getValues());
}
注意:
这种方法只有在最后一行内容确实在 A:C
.
列范围内时才有效
我有一个脚本可以很好地复制和粘贴从示例 Sheet1 范围:A1:C200
到 Sheet2 范围:A1:C200
的范围。我的问题是我的行数在 200 到 3000 行之间不断变化,具体取决于我每天导入到电子表格中的数据,目前我不得不不断地手动写入每个范围。
是否可以编写一个脚本,每次都适应可变的行范围,并将整个范围从列 A,B,C
复制到可用数据的最后一行,如范围公式:A1:C
?
请参阅脚本示例。
原剧本:(有效)
function copy() {
var OriginalRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet1').getRange("A1:C200");
var DestinationRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet2').getRange("A1:C200");
DestinationRange.setValues(OriginalRange.getValues());
}
理想变量范围脚本:(异常:行数不匹配错误)
function copy() {
var OriginalRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet1').getRange("A1:C");
var DestinationRange=SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet2').getRange("A1:C");
DestinationRange.setValues(OriginalRange.getValues());
}
您只需要 getLastRow() 即可获取包含内容的最后一行。您只需要稍微重构一下代码:
function copy() {
var OriginalSheet = SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet1')
var OriginalRange=OriginalSheet.getRange("A1:C"+OriginalSheet.getLastRow());
var DestinationSheet = SpreadsheetApp.openById('Spreadsheet ID').getSheetByName('Sheet2')
var DestinationRange=DestinationSheet.getRange("A1:C"+OriginalSheet.getLastRow());
DestinationRange.setValues(OriginalRange.getValues());
}
注意:
这种方法只有在最后一行内容确实在 A:C
.