Looking to move cells based on a value in google sheets using a script. Super green to all of this, just after watching some videos on the basics & using code found on a site, trying to make this work for my spreadsheet.
function doneCopy() {
var app = SpreadsheetApp;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetNameToWatch = ss.getSheetByName("Current")
var columnNumberToWatch = 8;
var valueToWatch = "DONE" ;
var sheetNameToMoveTheRowTo = "OLD";
//var ss = SpreadsheetApp.getActiveSpreadsheet();//this has already been declared
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == "Current" && range.getColumn() == 8 && range.getValue() == "DONE") {
var targetSheet = ss.getSheetByName("OLD");
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
It appears to not being working at all. Here is a link to the spreadsheet: https://docs.google.com/spreadsheets/d/1iRMuKKhC83lot4TV2dbOfBlgdtVzSuZ0rkoWKyTOUIM/edit?usp=sharing
End Goal: When the "Status" Column is "DONE" the whole row is moved to the "OLD" sheet (adding a row on the bottom) & then deleted from the "Current" sheet
答案 0 :(得分:0)
尝试一下:
SpreadsheetApp.getUi().createMenu('New Menu') {
.addItem('Run', 'doneCopy')
.addToUi()
}
function doneCopy() {
var ss=SpreadsheetApp.getActive();
var sheet=SpreadsheetApp.getActiveSheet();
var range=sheet.getActiveCell();
if (sheet.getName()=="Current" && range.getColumn()==8 && range.getValue()=="DONE") {
var targetSheet=ss.getSheetByName("OLD");
var targetRange=targetSheet.getRange(targetSheet.getLastRow() + 1, 1);//column one
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
答案 1 :(得分:0)
我可以像上面那样理解。如果我的理解是正确的,那么该修改如何?我认为您的情况有几个答案。因此,请仅考虑其中之一。修改后的脚本的流程如下。
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('doneCopy', 'doneCopy')
.addToUi();
}
function doneCopy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Current");
var values = sheet.getRange(1, 8, sheet.getLastRow(), 1).getValues();
var moveRows = values.reduce(function(ar, e, i) {
if (e[0] == "DONE") ar.push(i + 1);
return ar;
}, []);
var targetSheet = ss.getSheetByName("OLD");
moveRows.forEach(function(e) {
sheet.getRange(e, 1, 1, sheet.getLastColumn()).moveTo(targetSheet.getRange(targetSheet.getLastRow() + 1, 1));
});
moveRows.reverse().forEach(function(e) {sheet.deleteRow(e)});
}
onOpen()
在打开电子表格时运行。打开电子表格后,请从自定义菜单运行脚本。