質問編集履歴

4

わかりやすく文章を修正しました

2022/11/05 13:59

投稿

Kotapi
Kotapi

スコア5

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
  # 前提
2
2
 
3
- Google Apps Script(GAS)で、Gmailの内容を抽出して
3
+ Google Apps Script(GAS)で、**Gmailの内容を抽出して
4
- スプレッドシートに転記する仕組みを作っています。
4
+ スプレッドシートに転記する仕組み**を作っています。
5
5
 
6
6
  **チャットボットから送信されたお問い合わせ内容をGmailに送信し
7
7
  それをスプレッドシート上に転記する流れです。**
@@ -16,20 +16,17 @@
16
16
 
17
17
  を取得し、スプレッドシートに記入させたいと思っています。
18
18
 
19
- 一部の入力欄は複数行にわたって入力ができる仕様であり
19
+ **一部の入力欄は複数行にわたって入力ができる仕様**であり
20
20
  入力時に改行したところはメールでも改行される仕組みです。
21
21
 
22
- ================
22
+ =====メール本文例=====
23
-
24
23
  ■名前:〇〇です
25
24
  ■電話番号:0123456789
26
25
  ■メッセージ:これは1行目です
27
26
  これは2行目です
28
27
  これは3行目です
29
28
 
30
- 行飛ばして5行目です
29
+ 1行飛ばして5行目です
31
- この項目は自由に改行できるのです
32
-
33
30
  ================
34
31
 
35
32
  ↑このような状態でメールが届きます。
@@ -40,7 +37,7 @@
40
37
 
41
38
  ### 上記それぞれの項目をスプレッドシートに転記
42
39
  スプレッドシートの1行目に見出しを作り
43
- そこに「名前」「電話番号」「メッセージ」など各列の見出しを入れて準備完了。
40
+ そこに「名前」「電話番号」「メッセージ」など各列の見出しを入れて準備完了。
44
41
 
45
42
  そこに、メールから取得した情報を1行ずつ書き足していく仕組みです。
46
43
 
@@ -48,11 +45,11 @@
48
45
  **回答内容に改行を含む場合は全ての行を取得**し
49
46
  半角スペースもしくは半角スラッシュに置き換えて吐き出したいです。
50
47
 
51
- 例えば上の例でいうと、メッセージは
48
+ 例えば上のメールの例でいうと、メッセージは
52
49
 
53
- 「これは1行目です/これは2行目です/これは3行目です//行飛ばして5行目です/この項目は自由に改行できるのです
50
+ 「これは1行目です/これは2行目です/これは3行目です//1行飛ばして5行目です」
54
51
 
55
- 上記のように1行にまとめたいという意図です。
52
+ 上記のように**1行にまとめたい**という意図です。
56
53
 
57
54
  ※改行を置き換えるのは、下記のように1つかませるとできると思うので問題なさそうです
58
55
  ```
@@ -63,9 +60,9 @@
63
60
 
64
61
  じゃあ何が問題かというと
65
62
 
66
- メッセージ欄の1行目だけしか取得できず、改行後の内容を取得できないことです。
63
+ メッセージ欄の1行目だけしか取得できず、**改行後の内容を取得できない**ことです。
67
64
 
68
- メールの例だと、メッセージ欄は「1行目です」のみ取得できて、それ以降が取得できない状況です。
65
+ 上のメールの例だと、メッセージ欄は「1行目です」のみ取得できて、それ以降が取得できない状況です。
69
66
 
70
67
  ### 該当のソースコード
71
68
 
@@ -121,35 +118,34 @@
121
118
 
122
119
  ### 試したこと
123
120
 
121
+ ```JavaScript
124
122
  console.log();
123
+ ```
125
124
  を使って、どこで躓いているかをチェックしました。
126
125
 
127
- その結果、メッセージの1行目を取得、改行したところで取得をやめてまっているのはわかりました。
126
+ その結果、先にも述べた通り、メッセージの1行目のみ取得していないことはわかりました。
128
127
 
129
128
  matchを使うと1行しか取得できないのですね。
130
129
 
131
130
  考えてみれば
132
- plainBody.match(変数);
131
+ plainBody.match(条件);
133
- では条件にマッチする内容をその行に限って取得するのは当然で
132
+ ではその行に限って文字列を取得するのは当然でしたね。
134
133
 
135
- 仮にそれ以降の行も取得するなると
134
+ 仮にそれ以降の行も取得してしまう、nameの中身は
136
135
 
137
- nameの中身は
136
+ ```text
138
-
139
- 〇〇です
137
+ [〇〇です
140
138
  ■電話番号:0120114514
141
139
  ■メッセージ:これは1行目です
142
140
  これは2行目です
143
141
  これは3行目です
144
142
 
145
- 行飛ばして5行目です
143
+ 1行飛ばして5行目です]
146
- この項目は自由に改行できるのです」
144
+ ```
147
145
 
148
- 上記のように大変ことになるはずでよね
146
+ 上記のように不要情報も拾ってしまいます。
149
147
 
150
- だからと言ってメッセージ欄も1行目しか取得できないので困っています。
151
-
152
- どうにか複数行にわたるメッセージを取得する方法はないでしょうか。
148
+ では、今の状況でどうにかして複数行にわたるメッセージを取得できたらいいのでが、どうすれば良でしょうか。
153
149
 
154
150
  ### 補足情報
155
151
 

3

文章をわかりやすく調整しました。

2022/11/05 11:45

投稿

Kotapi
Kotapi

スコア5

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
  ================
23
23
 
24
24
  ■名前:〇〇です
25
- ■電話番号:0120114514
25
+ ■電話番号:0123456789
26
26
  ■メッセージ:これは1行目です
27
27
  これは2行目です
28
28
  これは3行目です
@@ -45,7 +45,7 @@
45
45
  そこに、メールから取得した情報を1行ずつ書き足していく仕組みです。
46
46
 
47
47
  ### 複数行の回答は改行を別の文字に置き換えて吐き出したい
48
- 回答内容に改行を含む場合は全ての行を取得し
48
+ **回答内容に改行を含む場合は全ての行を取得**
49
49
  半角スペースもしくは半角スラッシュに置き換えて吐き出したいです。
50
50
 
51
51
  例えば上の例でいうと、メッセージは
@@ -61,19 +61,15 @@
61
61
 
62
62
  ### 発生している問題・エラーメッセージ
63
63
 
64
- じゃあ何が問題かというと、メッセージ欄について1行目だけしか取得できず、改行後の内容を取得できないことです。
64
+ じゃあ何が問題かというと
65
65
 
66
- メーだと
66
+ ッセジ欄1行目けしか取得できず、改行後の内容を取得できないこです。
67
- 「1行目です」
67
+
68
- のみ取得できて、それ以降が取得できない状況です。
68
+ メール例だと、メッセージ欄は「1行目です」のみ取得できて、それ以降が取得できない状況です。
69
69
 
70
70
  ### 該当のソースコード
71
71
 
72
- 以下、問題のある箇所のみ記載します。
73
-
74
- 省略部分は
75
- 「特定の配信元アドレスから60秒以内に受信したメール」
76
- を検索条件に指定し、変数queryに代入する処理などを書いています。
72
+ 省略部分は「特定の配信元アドレスから60秒以内に受信したメール」を検索条件に指定し、変数queryに代入する処理などを書いています。
77
73
 
78
74
  ```JavaScript
79
75
  function myFunction2(){
@@ -130,8 +126,10 @@
130
126
 
131
127
  その結果、メッセージの1行目を取得し、改行したところで取得をやめてしまっているのはわかりました。
132
128
 
129
+ matchを使うと1行しか取得できないのですね。
130
+
133
131
  考えてみれば
134
- plainBody.match();
132
+ plainBody.match(変数);
135
133
  では条件にマッチする内容をその行に限って取得するのは当然で
136
134
 
137
135
  仮にそれ以降の行も取得するとなると
@@ -148,6 +146,7 @@
148
146
  この項目は自由に改行できるのです」
149
147
 
150
148
  上記のように大変なことになるはずですよね。
149
+
151
150
  だからと言ってメッセージ欄も1行目しか取得できないので困っています。
152
151
 
153
152
  どうにか複数行にわたるメッセージを取得する方法はないでしょうか。
@@ -157,15 +156,13 @@
157
156
  チャットボットからGmailへの通知メッセージを変えることは可能です。
158
157
  (例えばメッセージ欄の末尾に何か文字や記号を入れるなど)
159
158
 
160
- これを目印にして「メッセージ:」からその記号までを取得
159
+ これを目印にして「メッセージ:」からその記号までを取得する、というようなやり方でも構いません。
161
- というようなやり方でも構いません。
162
160
 
163
161
  上手いやり方でも、ちょっと泥臭いやり方でも
164
162
  解決方法があれば教えていただきたいです。
165
-
166
- Google Apps Scriptを利用しています。
167
163
 
168
164
  作業環境は
169
165
  - MacBook Air (M1, 2020)
170
166
  - MacOS Monterey (Version12.3.1)
171
167
  - Google Chrome (Version 107.0.5304.87)
168
+ です。

2

パソコンで見やすく改行の位置を調整しました

2022/11/05 11:31

投稿

Kotapi
Kotapi

スコア5

test CHANGED
File without changes
test CHANGED
@@ -3,11 +3,11 @@
3
3
  Google Apps Script(GAS)で、Gmailの内容を抽出して
4
4
  スプレッドシートに転記する仕組みを作っています。
5
5
 
6
- チャットボットから送信された
7
- お問い合わせ内容をGmailに送信し
6
+ **チャットボットから送信されたお問い合わせ内容をGmailに送信し
8
- それをスプレッドシート上に転記する流れです。
7
+ それをスプレッドシート上に転記する流れです。**
9
8
 
10
- GASでは、メールを検索し、本文を取得
9
+ GASでは、メールを検索し、本文を取得
10
+
11
11
  その中から
12
12
 
13
13
  - 「名前:」に続く文字列
@@ -40,32 +40,32 @@
40
40
 
41
41
  ### 上記それぞれの項目をスプレッドシートに転記
42
42
  スプレッドシートの1行目に見出しを作り
43
- そこに「お名前」「電話番号」「メッセージ」など
43
+ そこに「お名前」「電話番号」「メッセージ」など各列の見出しを入れて準備完了。
44
+
44
- 各列の見出しを入れ準備OKです。
45
+ そこに、メールから取得た情報1行ずつ書き足しいく仕組みです。
45
46
 
46
47
  ### 複数行の回答は改行を別の文字に置き換えて吐き出したい
47
- 回答内容に改行を含む場合は
48
+ 回答内容に改行を含む場合は全ての行を取得し
48
- 全てを取得し
49
- 半角スペースもしくは半角スラッシュに
49
+ 半角スペースもしくは半角スラッシュに置き換えて吐き出したいです。
50
- 置き換えて吐き出したいです。
51
50
 
52
- 例えば上の例でいうと
51
+ 例えば上の例でいうと、メッセージは
53
- メッセージ欄では
52
+
54
53
  「これは1行目です/これは2行目です/これは3行目です//行飛ばして5行目です/この項目は自由に改行できるのです」
55
- こんなふうに1行にまとめたいという意図です。
56
54
 
55
+ 上記のように1行にまとめたいという意図です。
56
+
57
- ※改行を置き換えるのは、下記のように1つかませるとできると思うので大丈夫だと思いま
57
+ ※改行を置き換えるのは、下記のように1つかませるとできると思うので問題なさそうで
58
58
  ```
59
59
  let message = strMessage.replace(/\r\n/, " / ");
60
60
  ```
61
61
 
62
62
  ### 発生している問題・エラーメッセージ
63
63
 
64
- じゃあ何が問題かというと
64
+ じゃあ何が問題かというと、メッセージ欄について1行目だけしか取得できず、改行後の内容を取得できないことです。
65
65
 
66
- ッセジ欄について
66
+ メールの例だと
67
- 1行目だけしか取得されず
67
+ 1行目です」
68
- 意図した挙動にらなことです。
68
+ のみ取得できて、それ以降が取得できない状況です。
69
69
 
70
70
  ### 該当のソースコード
71
71
 
@@ -73,8 +73,7 @@
73
73
 
74
74
  省略部分は
75
75
  「特定の配信元アドレスから60秒以内に受信したメール」
76
- を検索条件に指定し
77
- 変数queryに代入する処理などを書いています。
76
+ を検索条件に指定し、変数queryに代入する処理などを書いています。
78
77
 
79
78
  ```JavaScript
80
79
  function myFunction2(){
@@ -129,13 +128,11 @@
129
128
  console.log();
130
129
  を使って、どこで躓いているかをチェックしました。
131
130
 
132
- その結果、メッセージの1行目を取得し
133
- 改行したところで取得をやめてしまっているのはわかりました。
131
+ その結果、メッセージの1行目を取得し、改行したところで取得をやめてしまっているのはわかりました。
134
132
 
135
133
  考えてみれば
136
134
  plainBody.match();
137
- では条件にマッチする内容を
138
- その行に限って取得するのは当然で
135
+ では条件にマッチする内容をその行に限って取得するのは当然で
139
136
 
140
137
  仮にそれ以降の行も取得するとなると
141
138
 
@@ -151,16 +148,13 @@
151
148
  この項目は自由に改行できるのです」
152
149
 
153
150
  上記のように大変なことになるはずですよね。
151
+ だからと言ってメッセージ欄も1行目しか取得できないので困っています。
154
152
 
155
- だからと言って
156
- メッセージ欄も1行目しか
153
+ どうにか複数行にわたるメッセージを取得する方法はないでょう
157
- 取得できないので困っています。
158
154
 
159
- どうにか複数行にわたる
155
+ ### 補足情報
160
- メッセージを取得する方法はないでしょうか。
161
156
 
162
- チャットボットからGmailへの
163
- 通知メッセージを変えることは可能です。
157
+ チャットボットからGmailへの通知メッセージを変えることは可能です。
164
158
  (例えばメッセージ欄の末尾に何か文字や記号を入れるなど)
165
159
 
166
160
  これを目印にして「メッセージ:」からその記号までを取得
@@ -169,12 +163,9 @@
169
163
  上手いやり方でも、ちょっと泥臭いやり方でも
170
164
  解決方法があれば教えていただきたいです。
171
165
 
172
- ### 補足情報
173
-
174
166
  Google Apps Scriptを利用しています。
175
167
 
176
168
  作業環境は
177
169
  - MacBook Air (M1, 2020)
178
170
  - MacOS Monterey (Version12.3.1)
179
171
  - Google Chrome (Version 107.0.5304.87)
180
- です。

1

「実現したいこと」がわかりづらかったので修正しました

2022/11/05 11:15

投稿

Kotapi
Kotapi

スコア5

test CHANGED
File without changes
test CHANGED
@@ -36,27 +36,36 @@
36
36
 
37
37
  # 実現したいこと
38
38
 
39
+ 実現したいことは以下の通りです
40
+
39
- - 上記それぞれの項目をスプレッドシートに転記
41
+ ### 上記それぞれの項目をスプレッドシートに転記
40
42
  スプレッドシートの1行目に見出しを作り
41
43
  そこに「お名前」「電話番号」「メッセージ」など
42
44
  各列の見出しを入れて準備OKです。
43
45
 
44
- - 改行別の文字に置き換えて吐き出したい
46
+ ### 複数行の回答は改行別の文字に置き換えて吐き出したい
45
47
  回答内容に改行を含む場合は
48
+ 全てを取得し
46
49
  半角スペースもしくは半角スラッシュに
47
- 置き換えて吐き出し
50
+ 置き換えて吐き出したいです。
48
51
 
49
52
  例えば上の例でいうと
50
53
  メッセージ欄では
51
54
  「これは1行目です/これは2行目です/これは3行目です//行飛ばして5行目です/この項目は自由に改行できるのです」
52
55
  こんなふうに1行にまとめたいという意図です。
53
56
 
57
+ ※改行を置き換えるのは、下記のように1つかませるとできると思うので大丈夫だと思います。
58
+ ```
59
+ let message = strMessage.replace(/\r\n/, " / ");
60
+ ```
54
61
 
55
62
  ### 発生している問題・エラーメッセージ
56
63
 
64
+ じゃあ何が問題かというと
65
+
57
66
  メッセージ欄について
58
67
  1行目だけしか取得されず
59
- 意図した挙動になりません
68
+ 意図した挙動にならないことです
60
69
 
61
70
  ### 該当のソースコード
62
71