[英]Google Script: Copy row from one sheet to another depending on value
如果我没记错的话,虽然我见过类似的问题,但我没有见过这个具体的问题。
所以,我需要阅读特定列中的所有信息(在这种情况下,它将是 AF,无论我是否一直在使用该电子表格来尝试我一直在做的事情),然后检查该列中的单元格是否具有值(或字符串,对不起,Google Script 的新手)“完成”,然后将与该单元格对应的整行复制到辅助工作表,该辅助工作表将存储所有已完成的案例和内容。
我一直试图通过谷歌找到一些东西,但它总是如何复制整个工作表,我认为这没有用,而且我所做的 rn 复制单元格,无论该单元格 + 列上的值是什么
function copyIf() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheetByName("Stuff");
var destination = ss.getSheetByName("Terminados");
var condition = source.getRange('D2:D2000').getValue();
if (condition == "Terminado") {
source.getRange('A2').copyTo(destination.getRange('A2'));
source.getRange('A3').copyTo(destination.getRange('A3'));
}
}
我在想我可能应该实施某种 for 或 while 循环,因为我希望它不断运行,所以每当有人将某个单元格的状态更改为 Terminado 以将该行复制到辅助工作表时。
尝试这个
function copyIf() {
var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Stuff");
var archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Terminados");
if (feuille.getLastRow()==1){
SpreadsheetApp.getActive().toast('No data!', 'End of script 🗃️')
return
}
var data = feuille.getRange(2,1,feuille.getLastRow()-1,feuille.getLastColumn()).getValues()
var archiveData = []
var lignes = []
var ligne = 1
var col = 31 // AF
try {
data.forEach(function (row) {
if (row[col]=="Terminado") {
archiveData.push(row)
lignes.push(ligne)
}
})
archive.getRange(archive.getLastRow() + 1, 1, archiveData.length, archiveData[0].length).setValues(archiveData)
// lignes.reverse().forEach(x => feuille.deleteRow(x));
SpreadsheetApp.getActive().toast('Rows '+lignes.flat()+' hab been archived !', 'End of script 🗃️')
} catch (e) {
SpreadsheetApp.getActive().toast('No data to be archived!', 'End of script 🗃️')
}
}
如果要在处理后删除行,请在lignes.reverse().forEach(x => feuille.deleteRow(x));
之前删除//
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.