Я пытаюсь загрузить новую ревизию в существующий файл (исходный файл) и сохранить идентификатор для этого файла.
У меня включен 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 и просто изменил (жестко запрограммировал) некоторые фрагменты для своих нужд. Спасибо оригинальным кодировщикам за помощь.