2017-10-17 2 views
0

Ich bin neu in dieser Programmiersprache. Kann jemand helfen, meine Syntax zu reparieren? Ich versuche, dieses Beispiel zu kombinieren:Korrekte setBasicFilter Bedingung Syntax

 function setFilter() { 
     var ss = SpreadsheetApp.getActiveSpreadsheet(); 

     var filterSettings = {}; 

     // The range of data on which you want to apply the filter. 
     // optional arguments: startRowIndex, startColumnIndex, endRowIndex, endColumnIndex 
     filterSettings.range = { 
     sheetId: ss.getActiveSheet().getSheetId() 
     }; 

     // Criteria for showing/hiding rows in a filter 
     //   https://developers.google.com/sheets/api/reference/rest/v4/FilterCriteria 
     filterSettings.criteria = {}; 
     var columnIndex = 2; 
     filterSettings['criteria'][columnIndex] = { 
     'hiddenValues': ["England", "France"] 
     }; 

     var request = { 
     "setBasicFilter": { 
      "filter": filterSettings 
     } 
     }; 
     Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId()); 
    } 

mit dieser JSON Darstellung:

{ 
     "hiddenValues": [ 
     string 
     ], 
     "condition": { 
     object(BooleanCondition) 
     }, 
    } 

diese Art von festgelegten Kriterien (Dies ist, wo ich brauche Hilfe, ich bin mir nicht sicher, was das Objekt sein) soll:

//*original 'hiddenValues': ["England", "France"] 
     'condition': {object(NOT_BLANK)} 

ich habe es nicht gelungen, ein Beispiel im Internet zu finden, die „Bedingung“ nur „hiddenValues“ verwendet ... Jede mögliche Hilfe geschätzt

Antwort

0

Das Objekt, das Sie suchen, ist object(BooleanCondition)

{ 
    "type": enum(ConditionType), 
    "values": [{ object(ConditionValue) }], 
} 

aus In der enum(ConditionType) Liste, die die Filterbedingung entspricht, die Sie wollen. In der Beschreibung wird es Sie wissen lassen, wenn Sie die object(ConditionValue) hinzufügen müssen.

Wenn Sie einen benötigen oder mehr ConditionValues, fügen Sie das Objekt unten an der values[] mit entweder"relativeDate" || "userEnteredValue"

// object(ConditionValue) - Pick one 
{ 
    "relativeDate": enum(RelativeDate), 
    "userEnteredValue": string, 
} 

Platz der BooleanCondition innerhalb des object(FilterCriteria) wo Sie sich gerade 'condition': {object(NOT_BLANK)}

// object(BooleanCondition) with condition "NOT_BLANK" 
var condition_value = { 
     "type": "NOT_BLANK" 
    } 

// New FilterCriteria object 
filterSettings['criteria'][columnIndex] = { 
    'hiddenValues': ["England", "France"], 
    'condition': condition_value 
} 
+0

ich nicht haben Länger erhalten Sie einen Fehler mit dieser Änderung. Allerdings kann ich auch nicht das gewünschte Ergebnis erzielen. Es scheint, jede Methode, die ich versuche, die 2. Registerkarte zu filtern, möchte es die erste tun. ... Auch wenn der 2. der aktive Tab ist. Es wendet den Filter auch auf Spalte C anstelle von Spalte A an (Das dunklere Filtersymbol). Der Filter ist da, aber ohne Bedingungen. –

+0

Das liegt daran, dass 'range'' ss.getActiveSheet() ist. GetSheetId() '. Welches ist normalerweise der 1. Tab. Sie müssen das Blatt erhalten, das Sie tatsächlich wollen. Es gibt viele Möglichkeiten, dies zu tun. [getSheets()] (https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getSheets()), [getSheetsByName()] (https://developers.google.com/apps-script/reference/tabellarisch/tabellarisch # getSheetByName (String)) etc. 'ss.getSheets() [1] .getSheetId()' erhält den 2. Tab. Spalte A ist in diesem Fall auf Index 0 –

+0

Ich habe gerade festgestellt, dass meine Änderungen nicht im Skript gespeichert wurden. Ich bin mir nicht sicher, ob es daran lag, dass ich das Blatt zur gleichen Zeit auf meinem Telefon und dem Computer geöffnet hatte oder was. Aber nachdem ich alles geschlossen und wieder geöffnet hatte, begannen die Dinge wieder nett zu spielen. –