我正在嘗試創建一個通用模板,它將根據條件將資料從主電子表格匯入到子電子表格。
示例:洗掉子電子表格中的所有行,然后將主電子表格中包含“是”的所有行匯入到空子電子表格中。
這段代碼的問題在于它只能在同一個電子表格中作業,因為它使用copyTo. 為了讓 GAS 與其他電子表格進行通信,我需要將其洗掉copyTo并替換為getValues和setValues。我似乎無法讓它繼續作業。
這是我正在使用的當前代碼。我怎樣才能得到這個代碼(或類似的代碼)來實作我想要完成的事情?
function copyRows() {
//Source Info.
var sourceSpreadsheet = SpreadsheetApp.openById('15a9...');
var sourceSheet = sourceSpreadsheet.getSheetByName("Sheet1");
var sourceLastRow = sourceSheet.getLastRow();
//Destination Info.
var destinationSpreadsheet = SpreadsheetApp.openById('1DtL...');
var destinationSheet = destinationSpreadsheet.getSheetByName("Sheet1");
var destinationLastRow = destinationSheet.getLastRow();
//Condition to search for.
for (var i = 2; i <= sourceLastRow; i ) {
var cell = sourceSheet.getRange("T" i);
var val = cell.getValue();
if (val == "Yes") {
var srcRange = sourceSheet.getRange("A" i ":Z" i);
var destinationRow = destinationSheet.getLastRow();
var destinationRange = destinationSheet.getRange("A" (destinationRow 1) ":Z" (destinationRow 1));
srcRange.copyTo(destinationRange);
}
}
};
Stackoverflow 中的所有先前問題似乎僅用于將資料匯入同一電子表格中的新選項卡。
uj5u.com熱心網友回復:
嘗試這個:
function copyRows() {
//Source Info.
const sss = SpreadsheetApp.openById('15a9...');
const ssh = sss.getSheetByName("Sheet1");
const svs = ssh.getRange(2, 1, ssh.getLastRow() - 1, ssh.getastColumn()).getValues().filter(r => r[19] == 'Yes');
//Destination Info.
const dss = SpreadsheetApp.openById('1DtL...');
const dsh = dss.getSheetByName("Sheet1");
dsh.clearContents();
dsh.getRange(1, 1, svs.length, svs[0].length).setValues(svs);
}
- 篩選
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/345912.html
上一篇:如何有條件地更改GoogleAppsScriptforSheet中的資料
下一篇:增加文本值的公式
