Функция makeCopy () для возврата URL и названия скопированного файла с пользовательского диска

#google-apps-script #google-drive-api

#google-apps-script #google-drive-api

Вопрос:

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

мой Code.gs файловая функция:

 function createFileCopy(id){
  var file = id.split('.');
  var docName = DriveApp.getFilesByName(file[0]);
  while (docName.hasNext()) {
    var file = docName.next();
    var fileId = file.getId();
    var fileName = file.getName();
  }
  var sheet = TEMPLATES_DATA;
  var data = sheet.getRange(1, 9, sheet.getLastRow()-1, 1).getValues();

  var pos = data.map(function (obj) { return obj[0]; }).indexOf(id);

  if(pos > -1){
    var val = sheet.getRange("J"   (pos   1)).getValue()   1;
    var title = sheet.getRange("A"   (pos   1)).getValue();
    sheet.getRange("J"   (pos   1)).setValue(val);
  }

  return DriveApp.getFileById(fileId).makeCopy('Copy of ' title).getUrl();
}
  

функция в моем javascript.html файл должен сработать при успешном завершении следующим образом

 function fileCopySuccess(fileInfo){
    var content = '';
    if( fileInfo != null){
        content  = '<h2>'   fileInfo['title']   '</h2>';
        content  = '<a class="button action" href="'   fileInfo['url']   '" target="_blank">Open File</a>';
        $('#downloadBtn').html(content).removeClass('error');
    } else {
        $('#downloadBtn').html('');
    }
}
  

В настоящее время я получаю только undefined на обоих, title и URL

Я уверен, что мне нужно добавить какой-нибудь метод в конец после makeCopy() , чтобы передать массив моему fileCopySuccess , но не знаю, что и как.

Пожалуйста, помогите.

Ответ №1:

Вы должны вернуть объект JSON из функции Google Script.

 var newFile = DriveApp.getFileById(fileId).makeCopy('Copy of ' title);
return {
  title: title, 
  url: newFile.getUrl()
}
  

Комментарии:

1. отлично, это сработало как по волшебству, сработает ли это на стороне пользователя, дополнение можно установить из Chrome Store и G Suit?

2. Это решение работает на моем локальном диске Google, но я только что опубликовал новую версию своего дополнения, и когда я пытаюсь использовать его с другой учетной записи, я постоянно получаю сообщение об ошибке, которое You do not have permission to access the requested document.