2017-12-16 2 views
0

Also ich bin ziemlich neu, wenn es um Skripts geht. In der Vergangenheit konnte ich ein kleines Skript zum Arbeiten bekommen, aber das war ein isoliertes Ereignis und es war sowieso nur Kopieren/Einfügen. Ich arbeite in einem Google-Blatt. Hier ist, was ich versuche zu erreichen:Onedit Script nicht feuern

Ich möchte mein Blatt zu verbergen/zeigen bestimmte Spalten basierend auf dem Inhalt einer einzelnen Zelle, C3. Ich konnte ein Skript finden, das basierend auf this post funktionieren sollte, aber unabhängig davon, was ich mache, beeinflusst das Skript keine Änderungen an meinem Blatt. Unten ist meine modifizierte Version des Skripts. Der Hauptunterschied ist, dass Omar nur 3 verschiedene Ansichten wollte, während ich 13, eine für jeden Kalendermonat und eine, die alle anzeigt. Ich werde 3 Fälle für Leerzeichen einbeziehen.

function onEdit(e) { 

var sheet = e.source.getActiveSheet(); 
if (e.range.getA1Notation() !== 'C3' || sheet.getName() !== 'Overview') return; 
switch (e.value) { 
case 'All': 
    sheet.showColumns(1, sheet.getMaxColumns()-1) 
    break; 
case 'January': 
    sheet.showColumns(1, 2, 3, 4, 5, 26, 27) 
    sheet.hideColumns(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) 
    break; 
case 'February': 
    sheet.showColumns(1, 2, 3, 4, 5, 6, 7) 
    sheet.hideColumns(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27) 
    break; 
} 
} 

Ich glaube, das Skript sollte funktionieren, und vielleicht habe ich einen kleinen Implementierungsschritt verpasst. Irgendeine Hilfe?

Antwort

0

Kurze Antwort

onEdit (e) zeigt sich, dass nicht ausgeführt, aber was passiert ist, dass es Fehler hat.

Erklärung

Der Code Verwendung nicht unterstützt Syntax für showColumns und hideColumns, so seine Ausführung unterbrochen wird.

Die Syntax von showColumns ist showColumns(columnIndex) oder showColumns(columnIndex, numColumns). Die Syntax für hideColumns ist ähnlich. Details und Beispiele finden Sie unter https://developers.google.com/apps-script/reference/spreadsheet/sheet

Unter How can I test a trigger function in GAS? wird erklärt, wie Triggerfunktionen zu debuggen sind.

Cooper Erwähnung auf his answer, dass er einen Code, der etwas Ähnliches über was Sie versuchen zu erreichen und auch über die Einschränkungen der einfachen Auslöser zu tun veröffentlicht. Beachten Sie, dass das Ausblenden/Anzeigen von Zeilen/Spalten langsam ist und dass ein einfacher Trigger eine Ausführungszeit von 30 Sekunden hat. Der Weg, diese Grenze zu überwinden, besteht darin, einen installierbaren Trigger zu verwenden, aber vielleicht ist Ihr Fall einfach genug, um ohne die Verwendung einer Hilfsfunktion und eines installierbaren Triggers gelöst zu werden.

Hier ist eine Änderung, die Sie für den Januar Fall gemacht haben könnte.

case 'January': 
    sheet.showColumns(1, 5); // show columns from column A to column E 
    sheet.showColumns(26, 2); // show columns from column Z to column AA 
    sheet.hideColumns(6, 19); // hide columns from column F to column X 
    break; 

Ich ließ Sie den Februar-Fall selbst herausfinden.

+0

Ich verstehe, was Sie sagen, aber ich bin mir nicht sicher, was zu tun ist, um das Problem zu beheben. Was würden Sie ändern, um das gewünschte Ergebnis zu erzielen? –

+0

Ich weiß nicht, was du damit meinst. Es tut mir leid, wenn ich unwissend bin, weil ich es bin. Wenn Sie mir ein Beispiel dafür geben könnten, wie die korrekte Syntax aussehen würde, könnte ich wahrscheinlich den Rest zusammenstellen. –

+0

Ja, ich habe die Informationen über den von Ihnen bereitgestellten Link gelesen und konnte nicht genau festlegen, was genau ich ändern müsste, daher bitte ich um ein Beispiel. Ich habe keine Erfahrung mit so etwas, also verspreche ich dir, dass ich nicht nur faul bin, ich verstehe wirklich nicht die Hilfe, die du geben willst. –

0

Ich habe etwas ähnliches zu diesem vor kurzem können Sie einen Blick auf es here. Auch das Verstecken vieler Spalten kann Zeit in Anspruch nehmen, also achten Sie auf diese restrictions.

function onEdit(e) { 

var sheet = e.source.getActiveSheet(); 
if (e.range.getA1Notation() !== 'C3' || sheet.getName() !== 'Overview') return; 
switch (e.value) { 
case 'All': 
    sheet.showColumns(1, sheet.getLastColumn()-1); 
    break; 
case 'January': 
    //refer to my link above for creating a function like this 
    break; 
case 'February': 
    //refer to link again 
    break; 
} 
} 
+0

Die meisten Spalten sind konsekutiv, so dass die Erstellung einer Hilfsfunktion für den speziellen Fall des OP könnte mehr Arbeit als was nötig ist (das Skript nur zwei Fälle), aber auf jeden Fall ist das hilfreich, wenn die meisten Die zu verbergenden Spalten sind nicht aufeinanderfolgend. –

+0

Danke für die Antwort Cooper. Ich fürchte, ich muss dasselbe zu Ihrer Antwort sagen, die ich mit Rubens gemacht habe, als ich das Skript, das Sie für LJW in dem anderen Beitrag empfohlen haben, genau betrachtet habe. Ich bin mir nicht sicher, was genau ich in mein Skript schreiben soll. Da gibt es ein paar verschiedene Elemente, die außerhalb meines Verständnisses liegen. Wäre es möglich, dass Sie mir ein Beispiel zeigen, was Sie in den Januar-Fall bringen würden? Das würde mir genug Informationen geben, um mein Skript zu reparieren, denke ich. Nochmals vielen Dank und Entschuldigung für meine Ignoranz. –