Q&A
実現したいこと
手持ちの本をOCRで読み込み、スプレッドシートに転記したいと考えています。
(索引がついていない図鑑本の全文検索がしたい)
前提
作りたいのは以下です。
LINEに写メが送られたら
↓
Googole Driveに画像を保存
↓
Drirveに新たな画像が保存されたらGoogleドキュメントで画像を開く(OCR化)
↓
Googleドキュメントのテキストをスプレッドシートに転記(1画像1セル)
↓
Google Driveの画像とドキュメントファイルは削除
↓
LINEで書込完了と返事
発生している問題・エラーメッセージ
A1、A2と、最終行に1ページごとのテキストを追加していきたいのですが、A1に上書きされてしまいます。
該当のソースコード
GoogleAppsScript
1const ACCESS_TOKEN = '●●●'; // LINEアクセストークン 2const LINE_ENDPOINT = "https://api.line.me/v2/bot/message/reply"; 3const LINE_DATA_ENDPOINT = "https://api-data.line.me/v2/bot/message/"; 4const SHEET_ID = "●●●"; // スプレッドシートのID 5const FOLDER_ID = "●●●"; // Google DriveのフォルダID 6 7function doPost(e) { 8 // LINEからPOSTされるJSON形式のデータをGAS形式(JSオブジェクト)に変換 9 var json = JSON.parse(e.postData.contents); 10 11 // LINEから送信された画像を取得 12 var img_url = LINE_DATA_ENDPOINT + json.events[0].message.id + "/content"; 13 var img_options = { "headers" : { 'Authorization': 'Bearer ' + ACCESS_TOKEN } }; 14 const blob = UrlFetchApp.fetch(img_url, img_options).getBlob(); 15 16 // Google Driveに画像をアップ>OCRを同時実行>Googleドキュメントに保存 17 var driveOptions = { 18 "title": "test.jpg", 19 "parents": [{id: FOLDER_ID}] 20 }; 21 const image = Drive.Files.insert(driveOptions, blob, { "ocr": true, "ocrLanguage": "ja" }); 22 var ocrText = DocumentApp.openById(image.id).getBody().getText(); // ドキュメント内のテキスト取得 23 24 // スプレッドシートに読み取った内容を書込 25var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("●●●"); 26var lastRow = sheet.getLastRow() + 1; 27sheet.getRange(lastRow, 1).setValue(ocrText); 28 29 // 読取後、指定フォルダ内のファイルすべて削除 30 var folder = DriveApp.getFolderById(FOLDER_ID); 31 var files = folder.getFiles(); 32 while(files.hasNext()){ 33 var file = files.next(); 34 file.setTrashed(true); 35 } 36 // 応答用のメッセージを作成 37 var message = { 38 "replyToken" : json.events[0].replyToken, 39 "messages" : [{"type": "text", 40 "text" : "書込完了"}] // 応答メッセージの内容 41 }; 42 // LINE側へデータを返す際に必要となる情報 43 var options = { 44 "method" : "post", 45 "headers" : { 46 "Content-Type" : "application/json; charset=UTF-8", // JSON形式を指定、LINEの文字コードはUTF-8 47 "Authorization" : "Bearer " + ACCESS_TOKEN 48 }, 49 "payload" : JSON.stringify(message) // 応答文のメッセージをJSON形式に変換する 50 }; 51 // LINEへ応答メッセージを返す 52 UrlFetchApp.fetch(LINE_ENDPOINT, options); 53}
試したこと
上記コードのほか、appendRowも試しましたが、上書きされました。
GoogleAppsScript
1var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("●●●"); 2sheet.appendRow(ocrText);
とても初歩的な記述ミスのような気がするのですが、自分では見つけられませんでした。もしおわかりになる方がいたら、ヒントいただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。