Script für Google Tabellen

Blendi

Aktives Mitglied
Hallo ihr hilfsbereiten Leute

In VBA für Excel bring ich ja einiges zusammen, vor allem dank des Makro-Rekorders. Jetzt muss/darf ich mich auch mal mit Google Tabellen beschäftigen und bräuchte dafür zwei Skripts. Leider hab ich von Java nun halt mal null Ahnung und einen Rekorder gibts wohl auch nicht.
Wäre jemand von euch so nett und schreibt mir die zwei Funktionen? Ich glaub mit etwas Fachkenntnis sollte das kein so riesiges Problem sein. Ich beschreib sie mal:

Skript 1
- Auf der aktuellen Seite die Daten eines festen Bereichs (A4:S200) nach Spalte B aufsteigend sortieren.

Skript 2 (etwas aufwändiger)
- Die aktuelle Seite in eine andere Datei kopieren (immer die gleiche Zieldatei)
- Auf dieser Seite hat es viele Formeln. Diese Verknüpfungen sollten beim kopieren durch Werte ersetzt werden.
- Das Tabellenblatt soll in der neuen Datei umbenannt werden. Der neue Name steht in einer Zelle.

Ich würde mich riesig freuen, wenn mir das jemand machen könnte.

Danke und Gruss

Walter
 

Blendi

Aktives Mitglied
Lösung für Script 1

Hallo

Für das erste Script hab ich etwas im Internet gefunden, dass ich noch anpassen konnte und es funktioniert:

function onOpen() {
var menuEntries = []
menuEntries.push({name:"Vermietungen sortieren nach Datum", functionName:"sortVermiet"});
menuEntries.push({name:"Vermietungen sortieren nach Nr.", functionName:"sortVermietnr"});
SpreadsheetApp.getActiveSpreadsheet().addMenu('Vermietungen Sortieren', menuEntries);
}

function sortVermiet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Vermietungen");
var data = sheet.getRange("A4:Z200");
data.sort(2);
}

function sortVermietnr() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Vermietungen");
var data = sheet.getRange("A4:Z200");
data.sort(1);
}

Das zweite Script wird wohl schwieriger werden. Wäre für Hilfe weiterhin sehr dankbar.
 

Blendi

Aktives Mitglied
Lösung für Script 2

Hallo zusammen

Ich hab mit viel suchen und ausprobieren ein Skript zusammengebastelt, das grösstenteils macht, was ich wollte. Leider heisst das Tabellenblatt am neuen Ort immer "Kopie von ... ". Falls also noch jemand einen Tipp für mich hat, wie ich das umgehen könnte oder sonstige Verbesserungsvorschläge, dann nur her damit.
Hier also meine Lösung, vielleicht hilft sie ja jemand anderem:

function Rechexp() {
var ssOrginal = SpreadsheetApp.getActiveSpreadsheet(); //Name der Orginaldatei übergeben;
var sheetOrginal = ssOrginal.getSheetByName("Rechnung"); //Name der Tabelle mit der Orginalrechnung übergeben
sheetOrginal.copyTo(ssOrginal); //Kopie der Rechnungsseite erstellen
var sheetKopie = ssOrginal.getSheetByName("Kopie von Rechnung"); //Name der Kopie übergeben
var neuerName = sheetOrginal.getRange("B2").getValue(); //neuen Namen der Rechnung aus Zelle B2 auslesen (RechNr.+Name)
ssOrginal.setActiveSheet(sheetKopie); //zur kopierten Tabelle wechseln
ssOrginal.renameActiveSheet(neuerName); //und sie umbenennen.
var sheetKopie = ssOrginal.getActiveSheet(); //Name der Kopie übergeben
sheetOrginal.getRange(1, 1, 37, 7).copyValuesToRange(sheetKopie, 1, 7, 1, 37); //Kopie der Werte um die Formeln zu überschreiben
var ssZiel = SpreadsheetApp.openById(hier steht die id der Zieldatei); //Datei Rechnung PHG öffnen
sheetKopie.copyTo(ssZiel); //Kopie nach Rechnung PHG kopieren
ssOrginal.deleteSheet(sheetKopie); //Kopie in Orginaldatei löschen
}

Gruss
Walter
 
Oben