[英]Copy column values from one spreadsheet to another spreadsheet, adding only the necessary rows
我使用此公式將值從一列復制到另一電子表格列:
function SheetToSheet() {
var sss = SpreadsheetApp.openById('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
var ss = sss.getSheetByName('Sheet 1');
var range = ss.getRange(12,1,ss.getMaxRows()+1-12,1);
var data = range.getValues();
var tss = SpreadsheetApp.openById('BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
var ts = tss.getSheetByName('Sheet 2');
ts.getRange(12,1, data.length, data[0].length).setValues(data);
}
在這種情況下,我想從第12
行收集值,如果需要在另一個電子表格中添加行,請使用ss.getMaxRows()+1-12
,它只會根據需要添加盡可能多的行。
結果:
Add Row 11, 12, 13, 14 and 15
Add Values in Row 12, 13, 14 and 15
如果我使用getlastrow()
,則會添加更多不必要的行:
如果我在不計算+1-NumberOfRows
的情況下使用getMaxRows()
,它也總是復制不必要的行數:
是否有一個固定的 model 並不總是需要放置 calc +1-NumberOfRows
? 我害怕忘記更改計算值並添加錯誤的行數。
setValues
function 將添加絕對必要的行數,以便數據可以放入。它不會刪除錯誤,也不會添加超出需要的行數。
假設您要從目標工作表中的第 1 行開始粘貼,並且要粘貼 10 行數據,但目標工作表只有 6 行。 setValues
function 將創建更多行,以便您的數據可以完全適合。
最小可重現示例:
表 1
假設您在Sheet1
有 10 行數據:
表 2
Sheet2
只有 6 行可用:
如果您運行此代碼:
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh1 = ss.getSheetByName('Sheet1');
const sh2 = ss.getSheetByName('Sheet2');
const data = sh1.getRange('A1:A10').getValues();
sh2.getRange(1,1,data.length,data[0].length).setValues(data);
}
setValues
將完成這項工作並添加適合數據所需的絕對必要的行。
Sheet2(腳本執行后)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.