Greetings I am trying to generate a filtered view according to the user that accesses my spreadsheet, so far I have only managed to make this work:
function onOpen(){
var currentUser = Session.getActiveUser().getEmail();
SpreadsheetApp.getUi().alert("Bienvenido "+ currentUser);
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheets = spreadSheet.getSheets();
if (currentUser == "[email protected]"){
sheets[1].hideSheet();
var sheet = spreadSheet.getSheetByName("Trabajos");
var lastRow = sheet.getLastRow();
var range = sheet.getRange("C2:C"+lastRow);
//var filterRange = {};
for (i=1; i<lastRow; i++){
var filterQuestion = sheet.getRange(i,3).getValue();
if (filterQuestion == "Proyecto"){
sheet.hideRows(i);
}
}
}
}
But the rows can be displayed manually, I'm trying this other code but it does not work for me at all ...
function onOpen(){
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': ["Proyecto"]
};
var request = {
"setBasicFilter": {
"filter": filterSettings
}
};
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}
and I get this error: Failed execution: ReferenceError: "Sheets" is not defined. (line 25, file "Code") [0.003 seconds of total execution time]
What am I jumping? Is there any other solution ???