有几个StackOverflow问题解决了将一行数据移动到外部工作表和工作表内的问题。我想要做的是将它们合并到同一个工作表中,但我遇到了脚本工作时的问题,onEdit和使用循环在同一个工作表中写入相同的选项卡和两个附加的选项卡。
如果选中了"test1“选项卡中的复选框,请在选项卡"test1”、"test2“和"completed”的底部复制该行。
https://docs.google.com/spreadsheets/d/1_wHyVcR-rCBP6doJEQFqjwCdD6gzXsk_eU8p8MusmvY/edit?usp=sharing
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//var sec = SpreadsheetApp.getActiveSheet();
// var s = ss.getSheetByName("test1");
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
// Duplicates an order as a new draft on the last row of the draft tab
if (s.getName() == "test1" && r.getColumn() == 1 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
//var targetSheet = ss.getSheetByName("draft");
var sheets = ['test1', 'test2', 'Completed']
for (var i = 0; i < sheets.length; i++) {
var sheetName = sheets[i]
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
if (sheet != null) {
targetsheet(sheet)
}
}
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
sheets.forEach(function(sheet) {
targetsheet(sheet)
})
var target = sheets.getRange(sheets.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.copyRow(row);
}
}发布于 2020-08-22 10:11:24
试试这个:
function onMyEdit(e) {
e.source.toast('Entry')
const sh=e.range.getSheet();
const sA=['Sheet2','Sheet3','Sheet4'];//tabs to copy to
if(sh.getName()=='Sheet1' && e.range.columnStart==9 && e.value=="TRUE") {
e.source.toast('Conditional');
const row=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).getValues()[0];
sA.forEach(function(name){
let sh=e.source.getSheetByName(name);
sh.appendRow(row);
});
}
}https://stackoverflow.com/questions/63530200
复制相似问题