Я хочу создать скрипт Google, чтобы в таблице отображались только данные активных пользователей. - PullRequest
0 голосов
/ 08 июля 2019

Я хочу создать скрипт Google, который отображает данные активного пользователя, входящего в электронную таблицу, только потому, что на листе много пользователей, и это конфиденциальные данные, так как я могу это сделать?

function getActiveUser() { 
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var startRow = 2; // First row of data to process 
  var numRows = 31; // Number of rows to process 
  // Fetch the range of cells A2:B8 
  var dataRange = sheet.getRange(startRow, 1, numRows, 7); // Fetch values for each row in the Range. 
  var data = dataRange.getValues(); 
  var email = Session.getActiveUser().getEmail(); 
  Logger.log(email); 
}

1 Ответ

1 голос
/ 08 июля 2019

Если лист должен быть прочитан, а не отредактирован пользователями, вы можете связать скрипт с пустой Таблицей вместо Таблицы, содержащей все пользовательские данные, и изменить скрипт так, чтобы он копировализ таблицы, содержащей все данные, только пользовательские данные в таблицу пользователя.Это будет выглядеть так:

function getActiveUser() { 
  var sheet = SpreadsheetApp.openById('your_Spreadsheet_ID').getActiveSheet(); 
  var startRow = 2; // First row of data to process 
  var numRows = 31; // Number of rows to process 
  // Fetch the range of cells A2:B8 
  var dataRange = sheet.getRange(startRow, 1, numRows, 7); // Fetch values for each row in the Range. 
  var data = dataRange.getValues(); 
  var email = Session.getActiveUser().getEmail(); 
  //define a sheet where to copy only the user data
  var userSheet=SpreadsheetApp.getActiveSheet(); 
  var userRange = userSheet.getRange(startRow, 1, numRows, 7);
  // define the column in the sheet where the emails of the users is stored
  var userColumn=1;
  var k=1;
  //Copy all the rows that contain data of the user
  for(var i=0; i<data.length;i++){
    if(data[i][userColumn-1]==email){
      for(var j=0;j<6;j++){
       userRange.getCell(k,j+1).setValue(data[i][userColumn-1+j])
      }
    k++;  
    }
  }  
}

Однако имейте в виду, что это работает, только если вы храните электронную таблицу на общем диске.Таким образом, даже если пользователь не увидит электронную таблицу во время выполнения сценария, он все равно может получить к ней доступ вручную с общего диска.Чтобы решить эту проблему, вам нужно написать API и запустить его от учетной записи службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...