Ich bin neu bei Google Scripts und versuche, einige Prozesse in Google Spreadsheets zu automatisieren. Ich habe eine Möglichkeit gefunden, eine Zeile basierend auf dem Wert in einer bestimmten Spalte von einem Blatt zu einem anderen zu verschieben. Aber damit es über mehrere Blätter hinweg funktioniert, habe ich den Code für jedes Blatt dupliziert. Ich bin mir sicher, dass es einen Weg geben muss, dies zu vereinfachen, aber ich bleibe stecken. Siehe meinen Code unten.Google Script zum Ansehen mehrerer Blätter: Wie vereinfache ich dieses Skript?
function onEdit() {
// moves a row from a sheet to another when a magic value is entered in a column
// adjust the following variables to fit your needs
// see https://productforums.google.com/d/topic/docs/ehoCZjFPBao/discussion
var sheetNameToWatch = "BRG";
var columnNumberToWatch = 3; // column A = 1, B = 2, etc.
var valueToWatch = "done";
var sheetNameToMoveTheRowTo = "Done";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
var sheetNameToWatch = "Lesotho";
var columnNumberToWatch = 3; // column A = 1, B = 2, etc.
var valueToWatch = "done";
var sheetNameToMoveTheRowTo = "Done";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
var sheetNameToWatch = "Bosman";
var columnNumberToWatch = 3; // column A = 1, B = 2, etc.
var valueToWatch = "done";
var sheetNameToMoveTheRowTo = "Done";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
bearbeitet wurde Diese Antwort ist ausgezeichnet, weil das Skript kann jetzt auf jede Tabelle angewendet werden. Es funktioniert perfekt. –