我需要一些帮助来构建一个简单的脚本,它应该做以下事情:
源电子表格
检查表源上的Col C是否等于"Done">
如果是,复制并粘贴从栏A和栏B中符合条件的行到工作表history+复制粘贴的时间戳
加上复制和粘贴相同的值从字段A和B到电子表格目的地,第一个空白行在标签目的地+时间戳的复制粘贴
最后从第一个工作表源中删除复制的行,因此没有空行
如果没有,则保持
总的来说,目标是将符合标准的值剪切下来,并将它们同时粘贴到不同的工作表和不同的电子表格上。
给你:
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));
}
脚本的主要缺点:它不保留公式和格式。