Drive.Files.Update - загрузка новой ревизии для сохранения ошибки ID документа - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь загрузить новую ревизию в существующий файл (исходный файл) и сохранить идентификатор для этого файла.

У меня включен Google Drive API (v2) в расширенных службах Google. У меня есть скрипт как отдельный скрипт (не привязанный к документу или таблице Google, основанный на чем-то, что я прочитал, в котором сказано, что Drive.Files.Update не работает для этих скриптов).

В этой строке кода:

Drive.Files.update({
      title: currentFile.getName(), mimeType: currentFile.getMimeType()
}, originalFileID, blobOfNewContent);

Я получаю следующую ошибку: Ошибка выполнения: извините, произошла ошибка сервера. Пожалуйста, подождите немного и попробуйте снова. (строка 13, файл «Код») [общее время выполнения 8,215 секунд]

Какие-нибудь подсказки относительно того, что еще я могу попробовать? По сути, мне нужно поддерживать идентификатор файла и просто периодически обновлять содержимое из другого файла.

function overwriteFile(blobOfNewContent, originalFileID) 
{
  var currentFile;
  currentFile = DriveApp.getFileById(originalFileID);    

  if (originalFileID != "") 
  {//If original File exsts
    Drive.Files.update({
      title: currentFile.getName(), mimeType: currentFile.getMimeType()
    }, originalFileID, blobOfNewContent);
  }
} 

function getNewestSlidesInFolderAndUploadToStaticFileID() 
{
  // fileID of file that is "Original File"
  var mainfileID = "some id";

  var folders = DriveApp.getFoldersByName('Testing Slides');  
  var arryFileDates = [];
  var objFilesByDate = {};

  //find most recent file
  while (folders.hasNext())
  {
    var folder = folders.next();   
    var files = folder.getFilesByType("application/vnd.google-apps.presentation");

    while (files.hasNext())
    {
      var file = files.next();

      // Make sure the fileID is not the static file
      if (file.getId() != mainfileID)
      {      
        var fileDate = file.getLastUpdated();   
        objFilesByDate[fileDate] = file.getId(); //Create an object of file names by file ID  
        arryFileDates.push(file.getLastUpdated());
      } // end if id = mainfileID
    } //end while (files.hasNext())

    arryFileDates.sort(function(a, b) { return b - a});   
    var newestDate = arryFileDates[0];
    Logger.log('Newest date is: ' + newestDate);

    var newestFileID = objFilesByDate[newestDate];

    Logger.log('newestFile: ' + newestFileID);
    //return newestFile;
  }//while folders.hasNext()

  //Get the contents of the most recent file
  var newestFile = DriveApp.getFileById(newestFileID);
  var blob = newestFile.getBlob();

  overwriteFile(blob, mainfileID);

  //delete most recent file so that only the main file exists
  newestFile.setTrashed(true);  
}

Я нашел весь этот код здесь в stackoverflow и просто изменил (жестко запрограммировал) некоторые фрагменты для своих нужд. Спасибо оригинальным кодировщикам за помощь.

...