从列中收集值,清除列并将这些值复制到另一列
Collect values from a column, clear the column and copy those values to another column
清除后的A列:
A
a
b
c
d
我需要在清除该列之前从该列中获取值,但我只能在清除后复制这些值:
function lista_de_episodios_rc() {
var page = 'copy';
const ss = SpreadsheetApp.getActive().getSheetByName(page);
var history = ss.getRange(page + '!A1:A');
var to_del = 'A1:A'
ss.getRange(to_del + ss.getMaxRows()).clear({contentsOnly: true, skipFilteredRows: true});
history.copyTo(ss.getRange(page + '!C1'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
在这次尝试中,C 列保持为空。
有没有办法存储这些值以供清理后使用?
有很多方法可以做到这一点。这是一个相当手动但有效的方法:
您可以使用 getValues()
和 setValues()
从源列中获取值并将其设置到目标列中。
function move() {
Logger.log("Starting script...")
const ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Range for 4 values in the first column
const sourceColumn = ss.getRange(1, 1, 4, 1);
// Range for 4 values in the second column
const targetColumn = ss.getRange(1, 2, 4, 1);
// get values from source
const col1Content = sourceColumn.getValues();
// clear the source column
sourceColumn.clear();
// now set the target values
targetColumn.setValues(col1Content);
Logger.log("Done.")
}
输入
A
B
a
b
c
d
输出
A
B
a
b
c
d
对于其他方法,我建议您查看 documentation for Range class,其中描述了许多可用于移动内容的其他方法。还有不同版本的 copy()
和 clear()
允许您指定是否要保留格式、数据验证等。
这是一个获取列中所有值并将它们移动到另一列的函数:
function lista_de_episodios_rc() {
const fromCol = `A`
const toCol = `C`
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(`copy`)
const range = sheet.getRange(`${fromCol}:${fromCol}`)
const values = range.getValues().filter(cell => cell !== ``)
range.clearContent()
sheet.getRange(`${toCol}1:${toCol}${values.length+1}`).setValues(values)
}
清除后的A列:
A |
---|
a |
b |
c |
d |
我需要在清除该列之前从该列中获取值,但我只能在清除后复制这些值:
function lista_de_episodios_rc() {
var page = 'copy';
const ss = SpreadsheetApp.getActive().getSheetByName(page);
var history = ss.getRange(page + '!A1:A');
var to_del = 'A1:A'
ss.getRange(to_del + ss.getMaxRows()).clear({contentsOnly: true, skipFilteredRows: true});
history.copyTo(ss.getRange(page + '!C1'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
在这次尝试中,C 列保持为空。
有没有办法存储这些值以供清理后使用?
有很多方法可以做到这一点。这是一个相当手动但有效的方法:
您可以使用 getValues()
和 setValues()
从源列中获取值并将其设置到目标列中。
function move() {
Logger.log("Starting script...")
const ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Range for 4 values in the first column
const sourceColumn = ss.getRange(1, 1, 4, 1);
// Range for 4 values in the second column
const targetColumn = ss.getRange(1, 2, 4, 1);
// get values from source
const col1Content = sourceColumn.getValues();
// clear the source column
sourceColumn.clear();
// now set the target values
targetColumn.setValues(col1Content);
Logger.log("Done.")
}
输入
A | B |
---|---|
a | |
b | |
c | |
d |
输出
A | B |
---|---|
a | |
b | |
c | |
d |
对于其他方法,我建议您查看 documentation for Range class,其中描述了许多可用于移动内容的其他方法。还有不同版本的 copy()
和 clear()
允许您指定是否要保留格式、数据验证等。
这是一个获取列中所有值并将它们移动到另一列的函数:
function lista_de_episodios_rc() {
const fromCol = `A`
const toCol = `C`
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(`copy`)
const range = sheet.getRange(`${fromCol}:${fromCol}`)
const values = range.getValues().filter(cell => cell !== ``)
range.clearContent()
sheet.getRange(`${toCol}1:${toCol}${values.length+1}`).setValues(values)
}