моя проблема в том, что я не могу прочитать PDF-файл из электронной почты (в моем Gmail) как текст. Код ошибки: преобразование из application / octet-stream в application / pdf не поддерживается.
Если я добавлю attachment.setContentType ("application / pdf"); перед 'blob' ошибка заключается в том, что преобразование из приложения / pdf do application / pdf не поддерживается. Drive API включен. Пожалуйста помоги.
function search(){
var labels = GmailApp.getUserLabels();
for(var l = 0; l < labels.length; l++){
var label = labels[l].getName();
var threads = GmailApp.getUserLabelByName(label).getThreads();
for (var t = 0; t < threads.length; t++) {
var msgs = GmailApp.getMessagesForThreads(threads);
for (var i = 0 ; i < msgs.length; i++) {
for (var j = 0; j < msgs[i].length; j++) {
var message = msgs[i][j];
var id = message.getId();
var attachments = message.getAttachments();
for (var k = 0; k < attachments.length; k++) {
var attachment = attachments[k];
var content = attachment.getContentType();
if (label == 'LABEL'){
Logger.log('content = ' + content + ' - name: ' + attachment.getName());
//content = application/octet-stream - name: FILE.pdf
attachment.setContentType("application/pdf"); <-- HERE IS AN ERROR
var blob = attachment.getAs(MimeType.PDF);
var filetext = pdfToText(blob);
filetext = filetext.substr(filetext.search("SEARCH-TEXT:"));
var type = filetext.split(' ');
type = type[3];
var symbol = type.split('/');
symbol = symbol[3];
var date = filetext.substr(filetext.search("SEARCH-DATE:"));
date = date.split(' ');
date = date[2];
var value = filetext.substr(filetext.search("SEARCH-VALUE: "));
value = value.split(' ');
value = value[4];
if (symbol == 'RL' || symbol == 'UB'){
var record =
{
symbol : symbol,
value : value,
date : date,
label : label,
id : id
};
ANOTHER-FUNCTION(record);
}
function pdfToText (blob, options) {
options = options || {};
var parents = [];
if (options.path) {
parents.push(getDriveFolderFromPath(options.path));
}
var pdfName = blob.getName();
var resource = {
title: pdfName,
mimeType: blob.getContentType(),
parents: parents
};
// Save PDF as GDOC
resource.title = pdfName.replace(/pdf$/, 'gdoc');
var insertOpts = {
ocr: true,
ocrLanguage: options.ocrLanguage || 'pl'
}
var gdocFile = Drive.Files.insert(resource, blob, insertOpts);
// Get text from GDOC
var gdocDoc = DocumentApp.openById(gdocFile.id);
var text = gdocDoc.getBody().getText();
// Delete document.
if (!options.keepGdoc) {
Drive.Files.remove(gdocFile.id);
}
return text;
}
function getDriveFolderFromPath (path) {
return (path || "/").split("/").reduce ( function(prev,current) {
if (prev && current) {
var fldrs = prev.getFoldersByName(current);
return fldrs.hasNext() ? fldrs.next() : null;
}
else {
return current ? null : prev;
}
},DriveApp.getRootFolder());
}