1.О сценарии OP:
Я думаю, что Google Document, скопированный с помощью makeCopy()
с использованием сценария OP, можно использовать, а значения можно извлечь из скопированного документа.Если ошибка все еще возникает, можете ли вы подтвердить mimeType templateID
, используя следующий скрипт?Я думаю, что это поможет пользователям подумать о вашей проблеме.
var mimeType = DriveApp.getFileById(templateID).getMimeType();
Logger.log(mimeType)
2.О isGoogleType()
:
Хотя я не уверен, что дата добавления isGoogleType()
была добавлена, когда Документы Google были получены с помощью getBlob()
, mimeType автоматически становится application/pdf
.Это может быть подтверждено blob.getContentType()
.Я думаю, что это причина того, что blob.isGoogleType()
всегда false
.Но этот метод используется в Class Blob.
Исходя из этих ситуаций, я подумал, что isGoogleType()
не может быть напрямую использован для подтверждения того, является ли файл Google Docs.Поэтому я использую обходной путь, который извлекает mimeType из идентификатора файла.(Я думаю, что есть несколько обходных путей для подтверждения, является ли файл Google Docs.) Пример сценария выглядит следующим образом.
var res = ~DriveApp.getFileById(fileId).getMimeType().indexOf("application/vnd.google-apps") ? true : false
Я использую этот сценарий вместо isGoogleType()
.Когда файл с идентификатором файла , файлы Google , true
возвращаются.Если вы хотите вернуть true
только тогда, когда файл представляет собой электронную таблицу, документ и слайды, вы можете использовать следующий сценарий.
String.prototype.isGoogleType2 = function() {
switch(this.toString()) {
case "application/vnd.google-apps.spreadsheet":
return true;
case "application/vnd.google-apps.document":
return true;
case "application/vnd.google-apps.presentation":
return true;
default:
return false;
}
}
var doc = DocumentApp.getActiveDocument();
var res = DriveApp.getFileById(doc.getId()).getMimeType().isGoogleType2();
Ссылки:
Если я неправильно понял ваш вопрос, прошу прощения.