根据条件切割到另一个表格+电子表格



我需要一些帮助来构建一个简单的脚本,它应该做以下事情:

源电子表格

检查表上的Col C是否等于"Done">

  1. 如果是,复制并粘贴从栏A和栏B中符合条件的行到工作表history+复制粘贴的时间戳

  2. 加上复制和粘贴相同的值从字段A和B到电子表格目的地,第一个空白行在标签目的地+时间戳的复制粘贴

  3. 最后从第一个工作表中删除复制的行,因此没有空行

  4. 如果没有,则保持

总的来说,目标是将符合标准的值剪切下来,并将它们同时粘贴到不同的工作表和不同的电子表格上。

给你:

function main() {
// get 'Done' rows from sheet 'source' and remove these rows
var data = get_done();
// put the rows on the sheet 'history' (same spreadsheet)
copy_to_history(data);
// pyt the rows on the sheet 'destination' (another spreadsheet)
copy_to_destination(data);
}
function get_done() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('source');
var data = sh.getDataRange().getValues();
var keep = data.filter(x => x[2] != 'Done');
sh.clearContents().getRange(1,1,keep.length,keep[0].length).setValues(keep);
var timestamp = new Date();
var done = data.filter(x => x[2] == 'Done').map(x => [timestamp, x[0], x[1]]);
return done;
}
function copy_to_history(data) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('history');
data.forEach(row => sh.appendRow(row));
}
function copy_to_destination(data) {
var ss = SpreadsheetApp.openById('1niihiUXZii1gNnifn2ZLNf4JnvLs887mJMp53OcIphA');
var sh = ss.getSheetByName('destination');
data.forEach(row => sh.appendRow(row));
}

脚本的主要缺点:它不保留公式和格式。

相关内容

最新更新