Создайте ярлык папки в другой папке, используя javascript и Google api v3 - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь создать ярлык папки в другой папке моего диска, используя javascript и google api v3, и код, предоставленный Google, таков, но он не работает ... на самом деле, я даже не понимаю. Может ли кто-нибудь помочь мне в этом?:

var fileMetadata = {
  'name': 'Project Plan',
  'mimeType': 'text/plain'
};
drive.files.create({
  'resource': fileMetadata,
  'fields': 'id'
}, function (err, file) {
  if (err) {
    // Handle error
    console.error(err);
  } else {
    console.log('File Id: ' + file.id);
    shortcutMetadata = {
      'name': 'Shortcut to Project Plan',
      'mimeType': 'application/vnd.google-apps.shortcut'
      'shortcutDetails': {
        'targetId': file.id
      }
    };
    drive.files.create({
      'resource': shortcutMetadata,
      'fields': 'id,name,mimeType,shortcutDetails'
    }, function(err, shortcut) {
      if (err) {
        // Handle error
        console.error(err);
      } else {
        console.log('Shortcut Id: ' + shortcut.id +
                    ', Name: ' + shortcut.name +
                    ', target Id: ' + shortcut.shortcutDetails.targetId +
                    ', target MIME type: ' + shortcut.shortcutDetails.targetMimeType);
      }
    }
  }
});

ПРИМЕР ИТЕРАЦИОННОГО ПРОЦЕССА СОЗДАНИЯ СТРУКТУРЫ ПАПКИ:

  function crearIterativo(original,destino){
          //listo las carpetas que tengo en el original
          gapi.client.drive.files.list({
            'pageSize': 300,
            'q': "mimeType = 'application/vnd.google-apps.folder' and trashed = false and '"+original+"' in parents ",
            'fields': "nextPageToken, files(id, name, parents)"
          }).then(function(response) {
            var files = response.result.files;
            if (files && files.length > 0) {
              for (var i = 0; i < files.length; i++) { //Para cada carpeta encontrada, la creo en destino:
                var file = files[i];
                //informo
                appendPre(file.name + ' (' + file.id + ')' + ' ['+file.parents +']');
                arrayFoldOrig[file.name]=file.id;
                //creo carpeta
                var fileMetadata = {
                  'name' : file.name,
                  'mimeType' : 'application/vnd.google-apps.folder',
                  'parents': [destino]
                };
                gapi.client.drive.files.create({
                  resource: fileMetadata,
                }).then(function(respons) {
                  switch(respons.status){
                    case 200://si va bien, entonces crea estructura
                      var file2 = respons.result;
                      console.log('Created Folder Id: ', file2.id);
                      console.log('Llamo iterativo: ', file2.id);
                      crearIterativo(arrayFoldOrig[file2.name],file2.id);
                      break;
                    default:
                      console.log('Error creating the folder, '+response);
                      break;
                    }
                });
              //
              }
            } else {
              //appendPre('No files found.');
            }
          });
        }

1 Ответ

1 голос
/ 18 июня 2020

Я считаю, что ваша цель следующая.

  • Вы хотите создать ярлык, используя Javascript.
  • Вы уже выполнили процесс авторизации для создания файла с помощью Drive API .
  • Вы хотите знать, как создать метаданные для создания ярлыка.
  • В вашем скрипте вы хотите создать ярлык с помощью gapi.client.drive.files.create.

Для этого как насчет этого ответа?

Измененный сценарий:

Пожалуйста, измените свой сценарий следующим образом.

От:
var fileMetadata = {
  'name' : file.name,
  'mimeType' : 'application/vnd.google-apps.folder',
  'parents': [destino]
};
Кому:
const targetId = "###"; // Please set the target file ID or folder ID.
var fileMetadata = {
  'name': file.name,
  'mimeType': 'application/vnd.google-apps.shortcut',  // Modified
  'parents': [destino],
  'shortcutDetails': {'targetId': targetId},  // Added
};
  • Пожалуйста, используйте application/vnd.google-apps.shortcut в качестве mimeType.
  • Пожалуйста, установите ID целевого файла или папки на targetId. Например, если вы хотите создать ярлык для папки A, установите идентификатор папки для папки A равным targetId.
  • В приведенном выше случае ярлык создается для папки с идентификатором папки. из destino.

Ссылки:

...