Вы хотите импортировать содержимое файла PDF (в виде текста) в электронную таблицу Google.
Как указано @Jescanellas, это охватывается темой Получение текста из PDF в Google . Ответ Mogsdad особенно полезен, и следующий ответ представляет собой не что иное, как объединение различных компонентов в один ответ, соответствующий вашему сценарию.
В качестве подтверждения концепции - я создал простую таблицу с использованием Google Document и сохранилдокумент в файл PDF, загрузил файл PDF в папку на Google Диске, затем запустил этот скрипт (который привязан к электронной таблице). Файл PDF вставляется в ячейку «А1» электронной таблицы. Этот подход не претендует на отражение ваших данных - для этого, как вы думаете, у вас будет метод для заполнения ячеек электронной таблицы.
Ресурсы> Расширенные службы Google - Drive API
Сценарий требует, чтобы в редакторе сценариев был включен Drive Drive API:
Ресурсы> Расширенные службы Google> Drive API.
Примечание:
Mogsdad относится к функции pdfToText()
, которую можно найти как gist (pdfToText.js). Будущие читатели этого ответа должны это учесть, поскольку суть может со временем меняться.
function so5838796101() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "58387961";
var sheet = ss.getSheetByName(sheetname);
// identify the PDF file
var pdfFile = DriveApp.getFilesByName("so_58387961_export_from_Google_Docs.pdf").next();
var blob = pdfFile.getBlob();
// Get the text from pdf
// this uses Mogsdad's gist
var filetext = pdfToText( blob, {keepTextfile: false} );
// define destination and set value
var sheetdata =sheet.getRange("A1");
sheetdata.setValue(filetext);
}
// Mogsdad's gist start
/**
* Convert pdf file (blob) to a text file on Drive, using built-in OCR.
* By default, the text file will be placed in the root folder, with the same
* name as source pdf (but extension 'txt'). Options:
* keepPdf (boolean, default false) Keep a copy of the original PDF file.
* keepGdoc (boolean, default false) Keep a copy of the OCR Google Doc file.
* keepTextfile (boolean, default true) Keep a copy of the text file.
* path (string, default blank) Folder path to store file(s) in.
* ocrLanguage (ISO 639-1 code) Default 'en'.
* textResult (boolean, default false) If true and keepTextfile true, return
* string of text content. If keepTextfile
* is false, text content is returned without
* regard to this option. Otherwise, return
* id of textfile.
*
* @param {blob} pdfFile Blob containing pdf file
* @param {object} options (Optional) Object specifying handling details
*
* @returns {string} id of text file (default) or text content
*/
function pdfToText ( pdfFile, options ) {
// Ensure Advanced Drive Service is enabled
try {
Drive.Files.list();
}
catch (e) {
throw new Error( "To use pdfToText(), first enable 'Drive API' in Resources > Advanced Google Services." );
}
// Set default options
options = options || {};
options.keepTextfile = options.hasOwnProperty("keepTextfile") ? options.keepTextfile : true;
// Prepare resource object for file creation
var parents = [];
if (options.path) {
parents.push( getDriveFolderFromPath (options.path) );
}
var pdfName = pdfFile.getName();
var resource = {
title: pdfName,
mimeType: pdfFile.getContentType(),
parents: parents
};
// Save PDF to Drive, if requested
if (options.keepPdf) {
var file = Drive.Files.insert(resource, pdfFile);
}
// Save PDF as GDOC
resource.title = pdfName.replace(/pdf$/, 'gdoc');
var insertOpts = {
ocr: true,
ocrLanguage: options.ocrLanguage || 'en'
}
var gdocFile = Drive.Files.insert(resource, pdfFile, insertOpts);
// Get text from GDOC
var gdocDoc = DocumentApp.openById(gdocFile.id);
var text = gdocDoc.getBody().getText();
// We're done using the Gdoc. Unless requested to keepGdoc, delete it.
if (!options.keepGdoc) {
Drive.Files.remove(gdocFile.id);
}
// Save text file, if requested
if (options.keepTextfile) {
resource.title = pdfName.replace(/pdf$/, 'txt');
resource.mimeType = MimeType.PLAIN_TEXT;
var textBlob = Utilities.newBlob(text, MimeType.PLAIN_TEXT, resource.title);
var textFile = Drive.Files.insert(resource, textBlob);
}
// Return result of conversion
if (!options.keepTextfile || options.textResult) {
return text;
}
else {
return textFile.id
}
}
// Helper utility from http://ramblings.mcpher.com/Home/excelquirks/gooscript/driveapppathfolder
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());
}
// Mogsdad's gist end