実現したいこと
① GASで、特定のフォルダに保存されている複数のPDFを全てGoogleドキュメントに変換
② ①で変換した複数のGoogleドキュメント(ファイルによって、内容が異なる)から、
'調整後請求額(税抜)'と言う文字を検索し、その文字のすぐ右隣に記載されている金額を取得
③ ②で取得した値(金額)をスプレットシートに貼り付けてリスト化
function ocrSample() {
var folder = DriveApp.getFoldersByName('Amazon_ono').next();
var images = folder.getFilesByType('application/pdf'); //PDFを指定
while (images.hasNext()) {
var image = images.next();
var docName = image.getName().split(".")[0];
var Request_body = {
title: docName,
mimeType: 'application/pdf' //PDFを指定
}
Drive.Files.insert(Request_body, image, { ocr: true });
// Drive.Files.insert(Request_body,application,{ocr:true});
var newFile = DriveApp.getFilesByName(docName).next();
folder.addFile(newFile);
DriveApp.getRootFolder().removeFile(newFile);
}
//1行目だけ取得するコード(ここで複数のGoogleドキュメントから1行目としての文字は取得できます)
var docs = folder.getFilesByType('application/vnd.google-apps.document');
var texts = [];
while (docs.hasNext()) {
var file = docs.next();
var docId = file.getId();
var doc = DocumentApp.openById(docId);
var text = doc.getBody().getText().split('\n')[1];
texts.push([text]);
}
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, texts.length, 1).setValues(texts);
}
ありがとうございます!目から鱗です。抜き出すのではなく、置換で消すという発想が私にはありませんでした。
ご教示いただいた通り、
var text = doc.getBody().getText().replace(/^[\s\S]*調整後請求額\(税抜\)/,"")
texts.push([text]);
と書き換えて実行してみたところ、先頭に「調整後請求額(税抜)」の右隣の数値が表示され、以降の文字列が表示されました。以降の文字列の削除をどう削除するか、調べてやってみます。
助かりました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 01:43