![](/img/trans.png)
[英]Copy data from last row of master sheet and paste it in specific cells in another sheet in google sheets
[英]Copy specific Columns data from Last Row and paste to another sheet
我試圖從“總計”工作表中最后一行的特定列復制/獲取數據,並將它們傳遞給另一個名為“vnSheet”的工作表。 我之前發現的下面的代碼工作正常。 但是,它復制了母表中的所有行和列數據,我不希望發生這種情況。
function copySheet() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Total");
var destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("vnSheet");
var columns_to_be_copied = ['A', 'B', 'D', 'F'];
var columns_to_be_pasted = ['A', 'B', 'D', 'F'];
for (column in columns_to_be_copied) {
var copy_range_string = columns_to_be_copied[column] + ':' + columns_to_be_copied[column];
var paste_range_string = columns_to_be_pasted[column] + ':' + columns_to_be_pasted[column];
var source = sourceSheet.getRange(copy_range_string);
var destination = destSheet.getRange(paste_range_string);
source.copyTo(destination, {contentsOnly:true});
}
}
在這里,我只想從“總計”的最后一行復制'A', 'B', 'D', 'F'
(除了 'C' 和 'E' )列數據並將這些數據粘貼到相同的列中“vnSheet”但在最后一行。 我幾乎搜索了整個互聯網,沒有找到解決我的問題的方法,我發現的所有內容都與上面的代碼類似。
由於我是新手,我的編碼經驗有限,但我是 gd 學習者 :) 任何解決該問題的幫助將不勝感激。 謝謝。
在 for 循環之前使用sourceSheet.getLastRow()
獲取“總計”表中最后一行的行號,然后在每個列字母后添加此值。
假設您將上述結果分配給lastRow
,那么您可以這樣使用此變量:
var copy_range_string = columns_to_be_copied[column] + lastRow + ':' + columns_to_be_copied[column] + lastRow;
筆記:
閱讀https://developers.google.com/apps-script/guides/support/best-practices可能會對您有所幫助。 本文建議避免調用 Google Apps Script 類,因為它們很慢。 減少調用次數的一種方法確實可以達到您正在查看的結果,因為它允許使用getRangeList
一次獲取多個范圍。 另一種方法是使用高級表格服務,因為它允許進行批量更新。
所以有幾件事
假設Target Sheet
C 列和 E 列中已經有值,有幾種方法可以解決問題:
Target Sheet
獲取現有值,然后覆蓋要覆蓋的列,然后使用一個數組更新整行上面的選項 1 會更快,但我們說的是幾分之一秒。 因此,我推薦選項 2,因為它不會觸及包含您不想更改的字段的現有行。
我的建議在這里:
function copyHandler(){
const activeSheet = SpreadsheetApp.getActive()
var sourceSheet = activeSheet.getSheetByName("Total");
const sourceLastRowNum = sourceSheet.getLastRow()
var destSheet = activeSheet.getSheetByName("vnSheet");
const destLastRowNum = destSheet.getLastRow() + 1
const lastRow = sourceSheet.getRange(sourceLastRowNum, 1, 1, 6).getValues()[0]
lastRow.forEach( (value, index) => {
// Skip column C and column E
if( index == 2 || index == 4) return
destSheet.getRange(destLastRowNum, index+1).setValue(value)
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.