Как добавить папку Google Drive в раздел "Мой диск" для других пользователей

У меня есть принадлежащая мне структура иерархических папок и вложенных папок на Google Диске, и я хочу автоматически добавить ее в раздел "Мой диск" для всех пользователей в нашем домене Google Apps для бизнеса.

Как я могу это сделать? Я слышал о Google Apps Script и функции AddToFolder. Не могли бы вы мне помочь пожалуйста?

Заранее спасибо.

3 ответа

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

Но если пользователей много, вы являетесь администратором домена, и вы действительно хотите делать все это автоматически, без каких-либо действий, это возможно, но, вероятно, очень сложно. Я имею в виду, что вам нужно получить прямой доступ к Drive API и установить oAuth 2.0 для олицетворения ваших пользователей, потому что встроенный в DocsList API скриптов приложений не имеет этой функции олицетворения. Если вы действительно хотите этого, взгляните на этот другой вопрос.

Сначала настройте простое веб-приложение. В редакторе скриптов Google App даже есть шаблон, который поможет вам в этом.

Во-вторых, реализовать что-то вроде следующего и вызвать его из функции обработчика.

function addRequiredFolders() {
  var root = DocsList.getRootFolder();
  var folderIds = ["somefolderid", "anotherfolderid"];
  folderIds.map( function(id) { DocsList.getFolderById(id).addToFolder(root) } );
}

Я проверил вариант этого до этого момента. Следующим шагом будет опубликовать веб-приложение для вашего домена и разослать его по электронной почте людям или распространить другим способом. Я предполагаю, что у них будет неприятный шаг, связанный с необходимостью предоставить веб-приложению разрешение на доступ к их документам.

Прямо сейчас я реализовал эту функцию с помощью "API Списка документов Google". Я знаю, что этот API устарел, но пока он работает.

(код не закончен)

  (...)

  //var user = Session.getActiveUser().getUserLoginId()  OR
  var user = e.parameter.user_email 

  var TB_folder = e.parameter.TB_folder 
  var TB_sub_folder = e.parameter.TB_sub_folder 


  var base = 'https://docs.google.com/feeds/';
  var fetchArgs = googleOAuth_('docs', base);

  fetchArgs.method = 'POST';

  var rawXml =  "<?xml version='1.0' encoding='UTF-8'?>" + "<entry xmlns='http://www.w3.org/2005/Atom'>"
         +  "<category scheme='http://schemas.google.com/g/2005#kind' "
         +  "term='http://schemas.google.com/docs/2007#folder'/>"
         +  "<title>" + TB_folder +"</title>"
         +  "</entry>";

  fetchArgs.payload = rawXml;
  fetchArgs.contentType = 'application/atom+xml';
  fetchArgs.contentLength = 245;

 // POST a https://docs.google.com/feeds/default/private/full

 var url = base + user + '/private/full/?v=3&alt=json';
 var content = UrlFetchApp.fetch(url, fetchArgs).getContentText()
 var json = Utilities.jsonParse(content)


 var folder = json.entry.gd$resourceId.$t // -> I get "folder:folder_id"
 var id_folder = folder.split(':')[1]

 var folder_created_by = json.entry.gd$lastModifiedBy.email.$t
 var folder_owner      = json.entry.author['0'].email.$t

(...)

Теперь у вас есть идентификатор папки и вы можете использовать его для создания другой подпапки или файла...

Вам нужна эта функция:

  //Google oAuth
  function googleOAuth_(name,scope) {
    var oAuthConfig = UrlFetchApp.addOAuthService(name);
    oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
    oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
    oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");

    oAuthConfig.setConsumerKey("XXXXXXXX");
    oAuthConfig.setConsumerSecret("XXXXXXXXXXXXXXXXXXX");

    //oAuthConfig.setConsumerKey("anonymous");
    //oAuthConfig.setConsumerSecret("anonymous");

    return {oAuthServiceName:name, oAuthUseToken:"always"};
  }     

Вы можете создать файл или добавить пользователя в файл ( добавить Wriker).

Теперь я хочу реализовать эту функциональность с помощью " Drive API " . Если бы кто-то сделал это, было бы хорошо получить некоторую помощь.

Sergi

Другие вопросы по тегам