2017-08-25 3 views
0

Das folgende Beispiel funktioniert gut, wenn Sie manuell die setFilter() Funktion ausführen:Set Sheets Filter mit Apps Script onEdit mit batchupdate

https://docs.google.com/spreadsheets/d/1vSDdXU8XSnfG5ixjaMtDys1ynwpbKTptPb_ZFjuMASg/edit#gid=0

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()); 
} 

Aber die Funktion funktioniert nicht innerhalb onEdit()

function onEdit(e){ 
    setFilter(); 
} 

Funktioniert batchUpdate nicht in onEdit?

+0

Sie können [Auslöser] (https://developers.google.com/apps-script/guides/triggers/) für die Funktion 'setFilter' erstellen. – Ritz

+2

Zitat aus der Dokumentation: ** Da einfache Trigger automatisch ausgelöst werden, ohne den Benutzer um Autorisierung zu bitten, unterliegen sie mehreren Einschränkungen ** Sie verwenden einen einfachen Trigger. –

Antwort

1

Wie Sandy Good sagte, kann ein einfacher Auslöser wie onEdit keine Aktion ausführen, die eine Autorisierung erfordert, z. B. eine Tabelle ändern.

Stattdessen install a trigger, die bei jeder Bearbeitung ausgeführt wird: Es wird mit Ihrer Autorisierung ausgeführt und kann alles tun, was Sie tun können, indem Sie die Funktion manuell ausführen.

+0

Wenn Sie versuchen, eine Aktion durchzuführen, die eine Autorisierung erfordert, statt nur im Hintergrund zu stürzen, wäre es schön, wenn ein Fehler ausgegeben wird – howMuchCheeseIsTooMuchCheese