file.getas ('application / pdf') меняет встроенные URL-адреса на запрос google.com - PullRequest
0 голосов
/ 22 апреля 2020

Я создал документ Slide с использованием AppScript. На слайде содержится встроенный URL-адрес, вставленный в текстовое поле с использованием следующего кода:

textStyle.setLinkUrl ("https://www.apple.com");

Созданный документ слайда имеет правильный встроенный URL. Однако, когда я преобразую документ слайда в документ PDF, используя следующий код, URL-адрес изменяется на следующий. Это вызывает перенаправление при нажатии ссылки в средстве просмотра PDF.

https://www.google.com/url?q=https: // www.apple.com&sa=D&ust=1587520665890000&usg=AFQjCNFxTpL_mRUtgTWoi4Zgz97trJNIEg

Этот код преобразует документ Slide в PDF :

var pdfBlob = slideFile.getAs('application/pdf'); pdfBlob.setName(slideFile.getName() + ".pdf"); var pdfFile = DriveApp.createFile(pdfBlob);

Как ни странно, если я открываю документ Slide с Google Диска с помощью интерфейса браузера и выбираю «Загрузить» -> PDF, он генерирует документ PDF с правильным URL-адресом ( https://www.apple.com).

Итак, я проверил правильность URL-адреса в документе Slide. Я не понимаю, почему преобразование в PDF с использованием интерфейса getAs из AppScript изменяет URL-адрес в целевом PDF-документе, хотя пользовательский интерфейс Google не делает этого с тем же документом.

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

1 Ответ

1 голос
/ 22 апреля 2020

Точки изменения:

Когда файл Google Slides конвертируется в формат PDF с помощью DriveApp.getFileById(###).getAs('application/pdf') и DriveApp.getFileById(###).getBlob(), гиперссылки становятся вашей проблемой. Я думаю, что это может быть спецификацией на стороне Google. Если вы хотите использовать исходный URL в преобразованном формате PDF, используйте конечную точку для экспорта в формат PDF. Конечная точка может быть получена из exportLinks метода Files: get в Drive API v3.

Модифицированный скрипт:

Когда ваш скрипт модифицирован, он становится следующим:

var fileId = "###";  // Please set the Google Slides ID.

var url = "https://docs.google.com/feeds/download/presentations/Export?exportFormat=pdf&id=" + fileId;
var pdfBlob = UrlFetchApp.fetch(url, {headers: {authorization: "Bearer " + ScriptApp.getOAuthToken()}}).getBlob();
var slideFile = DriveApp.getFileById(fileId);
pdfBlob.setName(slideFile.getName() + ".pdf");
var pdfFile = DriveApp.createFile(pdfBlob);

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...