将数据从 sheet 复制到另一个有条件的
Copying data from a sheet to another with conditions
我一直在尝试将一些数据从 sheet 复制到另一个,但 运行 遇到了一些麻烦。
我必须复制数据并停止复制,直到脚本找到空的 space,我必须将此数据粘贴到另一个 sheet 那里有空白 space(可用 space).
这是我目前的代码:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("sheet1");
var pasteSheet = ss.getSheetByName("sheet2");
var source = copySheet.getRange(11,1,1,10);
var destination = pasteSheet.getRange(1,1,1,10);
for (i = 1; i < 20; i++) {
if (destination.isBlank() == true) {
destination = pasteSheet.getRange(i, 1, 1, 10);
source = copySheet.getRange(i + 10, 1, 1, 10);
source.copyTo(destination);
} else {
destination = pasteSheet.getRange(i, 1, 1, 10);
}
}
}
它识别出目的地是空的space,虽然它并没有真正粘贴它。 for (i = 1; i <20; i++)
用于测试目的。
如果您的数据在第一行和最后 non-empty 行之间没有任何空白行,那么您可以使用:
示例数据:
工作表 1
sheet2
脚本:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("sheet1");
var pasteSheet = ss.getSheetByName("sheet2");
// get last rows of each sheet
var sLastRow = copySheet.getLastRow();
var dLastRow = pasteSheet.getLastRow();
// get data from sheet1 from row 11 to last row
var source = copySheet.getRange(11,1,sLastRow - 10,10).getValues();
// paste data to sheet2's last row
pasteSheet.getRange(dLastRow + 1,1,source.length,source[0].length).setValues(source);
}
输出:
选择:
如果您的 sheet1 之间有空行,您可以 filter
sheet1 中的值。
示例数据:
工作表 1 中的第 13 行空白
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("sheet1");
var pasteSheet = ss.getSheetByName("sheet2");
// get last rows of each sheet
var sLastRow = copySheet.getLastRow();
var dLastRow = pasteSheet.getLastRow();
// get data from sheet1 from row 11 to last row
// exclude rows with blank values in all columns
var source = copySheet.getRange(11,1,sLastRow - 10,10).getValues()
.filter(row => row.filter(col => !col).length < row.length);
// paste data to sheet2's first blank row
pasteSheet.getRange(dLastRow + 1,1,source.length,source[0].length).setValues(source);
}
输出:
我一直在尝试将一些数据从 sheet 复制到另一个,但 运行 遇到了一些麻烦。
我必须复制数据并停止复制,直到脚本找到空的 space,我必须将此数据粘贴到另一个 sheet 那里有空白 space(可用 space).
这是我目前的代码:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("sheet1");
var pasteSheet = ss.getSheetByName("sheet2");
var source = copySheet.getRange(11,1,1,10);
var destination = pasteSheet.getRange(1,1,1,10);
for (i = 1; i < 20; i++) {
if (destination.isBlank() == true) {
destination = pasteSheet.getRange(i, 1, 1, 10);
source = copySheet.getRange(i + 10, 1, 1, 10);
source.copyTo(destination);
} else {
destination = pasteSheet.getRange(i, 1, 1, 10);
}
}
}
它识别出目的地是空的space,虽然它并没有真正粘贴它。 for (i = 1; i <20; i++)
用于测试目的。
如果您的数据在第一行和最后 non-empty 行之间没有任何空白行,那么您可以使用:
示例数据:
工作表 1
sheet2
脚本:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("sheet1");
var pasteSheet = ss.getSheetByName("sheet2");
// get last rows of each sheet
var sLastRow = copySheet.getLastRow();
var dLastRow = pasteSheet.getLastRow();
// get data from sheet1 from row 11 to last row
var source = copySheet.getRange(11,1,sLastRow - 10,10).getValues();
// paste data to sheet2's last row
pasteSheet.getRange(dLastRow + 1,1,source.length,source[0].length).setValues(source);
}
输出:
选择:
如果您的 sheet1 之间有空行,您可以 filter
sheet1 中的值。
示例数据:
工作表 1 中的第 13 行空白
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("sheet1");
var pasteSheet = ss.getSheetByName("sheet2");
// get last rows of each sheet
var sLastRow = copySheet.getLastRow();
var dLastRow = pasteSheet.getLastRow();
// get data from sheet1 from row 11 to last row
// exclude rows with blank values in all columns
var source = copySheet.getRange(11,1,sLastRow - 10,10).getValues()
.filter(row => row.filter(col => !col).length < row.length);
// paste data to sheet2's first blank row
pasteSheet.getRange(dLastRow + 1,1,source.length,source[0].length).setValues(source);
}