我試圖復制/讀取資料從特定列中的最后一排,從我的“總計”片,并通過那些名為“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 學習者 :) 任何解決該問題的幫助將不勝感激。 謝謝。
uj5u.com熱心網友回復:
所以有幾件事
- 據我所知,您目前沒有得到最后一行
- 您當前有重復的變數來保存相同的陣列
- 您當前正在復制整行,這不是您想要的
假設您的 C 列和 E 列中已經有值,Target Sheet則有幾種方法可以解決問題:
- 您從中獲取現有值
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)
})
}
uj5u.com熱心網友回復:
sourceSheet.getLastRow()在 for 回圈之前使用以獲取“總計”表中最后一行的行號,然后在每列字母后添加此值。
假設您將上述結果分配給 a 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它允許一次獲得多個范圍。另一種方法是使用高級表格服務,因為它允許進行批量更新。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/343986.html
