質問編集履歴

3

更にわかりやすく変更

2023/03/05 23:32

投稿

cardamon
cardamon

スコア19

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  ### 実現したいこと
2
4
 
3
5
  手持ちの本をOCRで読み込み、スプレッドシートに転記したいと考えています。
@@ -32,28 +34,28 @@
32
34
  const FOLDER_ID = "●●●"; // Google DriveのフォルダID
33
35
 
34
36
  function doPost(e) {
35
- // LINEからPOSTされるJSON形式のデータをGASで扱える形式(JSオブジェクト)に変換
37
+ // LINEからPOSTされるJSON形式のデータをGAS形式(JSオブジェクト)に変換
36
38
  var json = JSON.parse(e.postData.contents);
37
39
 
38
- // LINEから送信されたレシート画像を取得
40
+ // LINEから送信された画像を取得
39
41
  var img_url = LINE_DATA_ENDPOINT + json.events[0].message.id + "/content";
40
42
  var img_options = { "headers" : { 'Authorization': 'Bearer ' + ACCESS_TOKEN } };
41
43
  const blob = UrlFetchApp.fetch(img_url, img_options).getBlob();
42
44
 
43
- // Google Driveに取得した画像をアップロード、OCRを同時実行してGoogleドキュメント形式で保存
45
+ // Google Driveに画像をアップOCRを同時実行Googleドキュメント保存
44
46
  var driveOptions = {
45
47
  "title": "test.jpg",
46
48
  "parents": [{id: FOLDER_ID}]
47
49
  };
48
50
  const image = Drive.Files.insert(driveOptions, blob, { "ocr": true, "ocrLanguage": "ja" });
49
- var ocrText = DocumentApp.openById(image.id).getBody().getText(); // ドキュメント内のテキスト取得
51
+ var ocrText = DocumentApp.openById(image.id).getBody().getText(); // ドキュメント内のテキスト取得
50
52
 
51
- // スプレッドシートに読み取った内容を書
53
+ // スプレッドシートに読み取った内容を書込
52
- var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("test");
54
+ var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("●●●");
53
55
  var lastRow = sheet.getLastRow() + 1;
54
56
  sheet.getRange(lastRow, 1).setValue(ocrText);
55
57
 
56
- // 読指定したフォルダ内のファイルすべて削除
58
+ // 読取後指定フォルダ内のファイルすべて削除
57
59
  var folder = DriveApp.getFolderById(FOLDER_ID);
58
60
  var files = folder.getFiles();
59
61
  while(files.hasNext()){
@@ -85,7 +87,7 @@
85
87
  上記コードのほか、appendRowも試しましたが、上書きされました。
86
88
 
87
89
  ```GoogleAppsScript
88
- var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("test");
90
+ var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("●●●");
89
91
  sheet.appendRow(ocrText);
90
92
  ```
91
93
 

2

ステップをわかりやすく分解して追記

2023/03/05 23:25

投稿

cardamon
cardamon

スコア19

test CHANGED
File without changes
test CHANGED
@@ -1,17 +1,26 @@
1
1
  ### 実現したいこと
2
2
 
3
- 手持ちの本をOCRで読み込み、スプレッドシートに転記したいと考えています。
3
+ 手持ちの本をOCRで読み込み、スプレッドシートに転記したいと考えています。
4
-
5
- (索引がついていない料理図鑑で、全文検索がしたいという意図です
4
+ (索引がついていない図鑑本の全文検索がしたい)
6
5
 
7
6
  ### 前提
7
+ 作りたいのは以下です。
8
8
 
9
+ LINEに写メが送られたら
10
+
11
+ Googole Driveに画像を保存
12
+
13
+ Drirveに新たな画像が保存されたらGoogleドキュメントで画像を開く(OCR化)
14
+
9
- LINEに写メを送ると、GoogleドキュメントのOCR機能を通してテキスト化され、1ページ1セルで、スプレッドシートに転記されるGASを組みたいと考え、以下のサイトを参考にしました。
15
+ Googleドキュメントのテキストスプレッドシートに転記(1画像1セル)
16
+
10
- https://prtn-life.com/blog/gas-line-ocr#comment-1556
17
+ Google Driveの画像とドキュメントファイルは削除
18
+
19
+ LINEで書込完了と返事
20
+
11
21
 
12
22
  ### 発生している問題・エラーメッセージ
13
23
  A1、A2と、最終行に1ページごとのテキストを追加していきたいのですが、A1に上書きされてしまいます。
14
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-05/964b8096-2fe7-4746-a441-14d00253138f.png)
15
24
 
16
25
  ### 該当のソースコード
17
26
 
@@ -55,7 +64,7 @@
55
64
  var message = {
56
65
  "replyToken" : json.events[0].replyToken,
57
66
  "messages" : [{"type": "text",
58
- "text" : "書完了"}]     //  応答メッセージの内容
67
+ "text" : "書込完了"}]     //  応答メッセージの内容
59
68
  };
60
69
  // LINE側へデータを返す際に必要となる情報
61
70
  var options = {

1

誤りがあったため修正(コードの中に画像を貼り付けていたので削除)

2023/03/05 14:47

投稿

cardamon
cardamon

スコア19

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,8 @@
40
40
  var ocrText = DocumentApp.openById(image.id).getBody().getText(); // ドキュメント内のテキストを取得
41
41
 
42
42
  // スプレッドシートに読み取った内容を書き込み
43
- var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("test");![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-05/853bd54f-9e75-4fba-94b8-3987a3829963.png) var lastRow = sheet.getLastRow() + 1;
43
+ var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("test");
44
+ var lastRow = sheet.getLastRow() + 1;
44
45
  sheet.getRange(lastRow, 1).setValue(ocrText);
45
46
 
46
47
  // 読み取り後は指定したフォルダ内のファイルすべて削除