Как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Проблема и обходной путь:
Я думаю, что причина вашей проблемы заключается в следующем изменении официального документа .
Сначала мы вносим изменения в авторизацию для Google Drive API. Если вы авторизуете запросы на загрузку в Drive API с помощью токена доступа в параметре запроса, вам нужно будет перенести ваши запросы для аутентификации с использованием заголовка HTTP. Начиная с 1 января 2020 года, загрузка вызовов на конечные точки files.get, revisions.get и files.export, которые аутентифицируются с использованием токена доступа в параметре запроса, больше не поддерживаются, что означает, что вам необходимо обновить метод аутентификации.
В описанной выше ситуации URL var imageUrl = file.getDownloadUrl() + "&access_token=" + ScriptApp.getOAuthToken();
не может быть использован. Например, при доступе к URL-адресу экран входа в систему отображается даже при использовании токена доступа.
Чтобы избежать этой проблемы, как насчет следующей модификации?
Точки модификации :
- Файл открыт для общего доступа и размещен в Google Slides. Затем файлообменник закрывается.
- В этом случае, даже если доля файла закрыта, размещенное изображение на слайдах не удаляется.
- В качестве URL-адреса используется webContentLink.
Модифицированный скрипт:
Когда ваш скрипт модифицируется, он становится следующим:
function test_image(){
var imageUrls = DriveApp.getFilesByName("DSC_3632.png");
var file; // Modified
while (imageUrls.hasNext()) {
file = imageUrls.next();
}
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); // Added
var imageUrl = "https://drive.google.com/uc?export=download&id=" + file.getId(); // Modified
var model_file = DriveApp.getFileById("your-id");
var presentation = model_file.makeCopy("totot");
var presentation =Slides.Presentations.get(presentation.getId())
var requests = [{
"replaceAllShapesWithImage": {
"imageUrl": imageUrl,
"imageReplaceMethod": "CENTER_INSIDE",
"containsText": {
"text": "toto",
"matchCase": false,
}
}
}];
var presentationId = presentation.presentationId
var createSlideResponse = Slides.Presentations.batchUpdate({requests: requests}, presentationId);
file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE); // Added
}
Ссылки:
Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.