質問編集履歴
4
質問内容の変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -37,12 +37,11 @@
|
|
37
37
|
|
38
38
|
/* Daily test overviewの表タグを除外 */
|
39
39
|
var str13 = str12.replace('<table style="border-collapse:collapse;font-size:12px;font-weight: normal; font-style: normal;text-align:right;background-color:#f6f6f6;">' ,'');
|
40
|
-
|
41
|
-
|
42
|
-
var str16 = str15.replace('<td style="border:1px solid; color:#000000;background-color:#ffffff;font-weight: normal; font-style: normal;text-align:left;vertical-align:center;font-size:12px;"></td><td style="border:1px solid; vertical-align:center;"></td></tr>', '');
|
43
|
-
|
40
|
+
//※一部略
|
41
|
+
|
44
42
|
/* 表項目のタグ置換え */
|
45
43
|
var str17 = str16.replace('<th style="font-size:-12px;font-weight: normal; font-style: normal;text-align:center;vertical-align:center;border:1px solid; border-collapse:collapse;"></th>', '');
|
44
|
+
|
46
45
|
/* 表データのタグ置換え */
|
47
46
|
var str18 = str17.replace('<td class = "grid" style="text-align:right;vertical-align:center;border:1px solid; border-collapse:collapse;"></th>', '');
|
48
47
|
Logger.log(str18.replace(' ',''));
|
@@ -82,16 +81,18 @@
|
|
82
81
|
|
83
82
|
**<課題>**
|
84
83
|
①Spreadsheetの表示結果では1行ずつデータが格納されている
|
85
|
-
→余分な改行やスペースが多く、見づらいので削除したい
|
84
|
+
→ 余分な改行やスペースが多く、見づらいので削除したい
|
86
85
|
(対策検討)
|
87
|
-
|
86
|
+
→ 改行コードを探して改行コードを削除する方法
|
87
|
+
下記コードを応用して改行コードを他のものに変換できるのでしょうか。
|
88
88
|
```JavaScript
|
89
|
+
//改行コードを<br>に置換してみる
|
89
90
|
str.replace(/\r?\n/g, '<br>');
|
90
91
|
```
|
91
92
|
②テキスト本文の表をそのまま表示させたい
|
92
93
|
(対策検討)
|
93
94
|
最後のところに、「sheet.getRange(i+1,1).setValue(mail_body_split[i]);」
|
94
|
-
2行目に出したいときに、「(i+2,1)」にすれば可能でしょうか。
|
95
|
+
2行目に出したいときに、**「(i+2,1)」**にすれば可能でしょうか。
|
95
96
|
|
96
97
|
```Google Apps Script
|
97
98
|
/* セルにデータを追加(A1のセル) */
|
3
質問内容を変えました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Gmail本文テキスト
|
1
|
+
Gmail本文テキストの表データをGASでコピペしたい
|
body
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
###前提
|
2
2
|
######**システム要件**:最新取得した特定Gmail本文をSpreadSheetでの情報管理を自動化
|
3
|
-
**Gmail本文からテキスト抽出した情報を
|
3
|
+
**Gmail本文からテキスト抽出した情報を抽出し、SpreadSheetに貼り付ける**
|
4
4
|
|
5
|
-
▼スクリプトの流れ(
|
5
|
+
▼スクリプトの流れ(⑥まで実行結果が出ている)
|
6
6
|
①特定の件名のメールを検索し、最新メール本文を取得
|
7
7
|
②シートを作成する前に、シート名をその日の「年月日」にするためのタイムスリップを取得
|
8
8
|
③②で取得したタイムスリップ名のシートを追加
|
@@ -14,34 +14,28 @@
|
|
14
14
|
```
|
15
15
|
function getMail() {
|
16
16
|
|
17
|
-
|
17
|
+
/* メールを検索し本文を変数に保存 */
|
18
18
|
var threads = GmailApp.search('subject:Softbank Daily Results - SIM Box Detection'); // メールを検索し一覧を取得
|
19
19
|
var thread_top = threads[0]; // そのうちいちばん新しいメールを取得
|
20
20
|
|
21
|
-
//var mail_body = thread_top.getMessages()[0].getPlainBody(); // <br/>タグなしの本文を取得 ※本文のHTMLテキストが表示されず
|
22
21
|
var mail_body = thread_top.getMessages()[0].getBody(); // 本文のテキストを取得
|
23
|
-
|
22
|
+
|
24
|
-
|
25
|
-
|
23
|
+
/* テキストに含まれているHTMLタグを除去する */
|
26
24
|
var str = mail_body;
|
27
25
|
var str2 = str.replace(/<('[^']*'|'[^']*'|[^''>])*>/g,''); //g内の文字列を空欄に置き換え
|
28
26
|
var str3 = str2.replace('','');
|
29
27
|
|
30
|
-
|
28
|
+
/* HTMLテキストの前置き箇所を除外 */
|
31
|
-
|
29
|
+
var str4 = str3.replace('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">','');
|
32
|
-
var str5 = str3.replace(/<!-- tell the browser to not use it's
|
30
|
+
var str5 = str3.replace(/<!-- tell the browser to not use it's
|
33
|
-
var str6 = str5.replace(/body {font-weight:normal; font-size:14px; background-color:#cccccc; font-family:Arial, Helvetica, sans-serif; margin:0px;}/g ,'');
|
34
|
-
var str7 = str6.replace(/table.contentwithborder {border:1px solid black;border-collapse:collapse;text-align:left;vertical-align:top;}/g, '');
|
35
|
-
var str8 = str7.replace(/td.grid {border:1px solid black;text-align:left;border-collapse:collapse;}/g,'');
|
36
|
-
var str9 = str8.replace(/td.transposecolgrid {background-color:#f6f6f6;}/g, '');
|
37
|
-
|
31
|
+
//※一部略
|
38
|
-
|
32
|
+
|
39
|
-
|
33
|
+
/* 表の件名のみ抽出 */
|
40
34
|
var str11 = str10.replace('<span style="color:#000080; line-height:150%; padding-left:5px"><strong></strong></span>', '');
|
41
|
-
|
35
|
+
/* 表フォーマットの除外 */
|
42
36
|
var str12 = str11.replace('<table style="font-size:-12px;font-weight: normal; font-style: normal;border:1px solid; border-collapse:collapse;">' ,'');
|
43
37
|
|
44
|
-
|
38
|
+
/* Daily test overviewの表タグを除外 */
|
45
39
|
var str13 = str12.replace('<table style="border-collapse:collapse;font-size:12px;font-weight: normal; font-style: normal;text-align:right;background-color:#f6f6f6;">' ,'');
|
46
40
|
var str14 = str13.replace('<tr style="background-color:#ffffff;color:#000000;font-size:12px;text-align:center;vertical-align:center;">', '');
|
47
41
|
var str15 = str14.replace('<th style="background-color:#ffffff;font-size:12px;border:1px solid; font-weight: normal; font-style: normal;"><p></th><th style="background-color:#ffffff;font-size:12px;border:1px solid; font-weight: normal; font-style: normal;writing-mode:tb-rl;filter:flipv fliph;"><p></th></p></tr>', '');
|
@@ -52,25 +46,23 @@
|
|
52
46
|
/* 表データのタグ置換え */
|
53
47
|
var str18 = str17.replace('<td class = "grid" style="text-align:right;vertical-align:center;border:1px solid; border-collapse:collapse;"></th>', '');
|
54
48
|
Logger.log(str18.replace(' ',''));
|
55
|
-
//Logger.log(str18);
|
56
49
|
|
57
|
-
//var mail_body_split = str18.split(/\r\n|\r|\n/); // メールの本文を改行ごとに配列に格納
|
58
50
|
var mail_body_split = str18.split(/\r\n/); // メールの本文を改行ごとに配列に格納
|
59
51
|
|
60
|
-
|
52
|
+
/* シート名用にタイムスタンプを取得 */
|
61
|
-
var today = new Date();
|
53
|
+
var today = new Date(); // 現在のタイムスタンプを取得
|
62
54
|
var timestamp = today.getFullYear()+"/"+(today.getMonth()+1)+"/"+today.getDate(); // タイムスタンプを整形(YYYY/MM/DD)
|
63
55
|
|
64
|
-
|
56
|
+
/* シートを追加(シート名はタイムスタンプ */
|
65
57
|
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
|
66
58
|
objSpreadsheet.insertSheet(timestamp);
|
67
59
|
|
68
|
-
|
60
|
+
/* シートの移動(上記で作成したシートに移動)*/
|
69
61
|
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
|
70
62
|
var sheet = spreadsheet.getSheetByName(timestamp);
|
71
63
|
spreadsheet.setActiveSheet(sheet);
|
72
64
|
|
73
|
-
|
65
|
+
/* セルにデータを追加(A1のセル) */
|
74
66
|
for(var i=0; i<mail_body_split.length; i++) { // 配列のデータの数(改行の行数)だけ繰り返す
|
75
67
|
sheet.getRange(i+1,1).setValue(mail_body_split[i]); // 1行ごとに貼り付ける(貼り付けるセルを1行ずつ下にする)
|
76
68
|
}
|
@@ -82,22 +74,32 @@
|
|
82
74
|
######SpreadSheetに1列ずつ改行されたデータを表整理したい
|
83
75
|
|
84
76
|
**★完成イメージ**
|
85
|
-
|
77
|
+

|
86
78
|
###試したこと
|
87
|
-
|
88
79
|
**実行結果**
|
80
|
+

|
89
81
|
|
90
|
-
実行結果先:SpreadSheet参照
|
91
82
|
|
92
|
-
|
93
83
|
**<課題>**
|
84
|
+
①Spreadsheetの表示結果では1行ずつデータが格納されている
|
94
|
-
|
85
|
+
→余分な改行やスペースが多く、見づらいので削除したい
|
86
|
+
(対策検討)
|
95
|
-
|
87
|
+
JSで改行コードを<br>に置換してみる
|
96
|
-
|
88
|
+
```JavaScript
|
89
|
+
str.replace(/\r?\n/g, '<br>');
|
90
|
+
```
|
97
|
-
②テキスト本文を表
|
91
|
+
②テキスト本文の表をそのまま表示させたい
|
98
|
-
|
92
|
+
(対策検討)
|
99
|
-
|
93
|
+
最後のところに、「sheet.getRange(i+1,1).setValue(mail_body_split[i]);」
|
94
|
+
2行目に出したいときに、「(i+2,1)」にすれば可能でしょうか。
|
100
95
|
|
96
|
+
```Google Apps Script
|
97
|
+
/* セルにデータを追加(A1のセル) */
|
98
|
+
for(var i=0; i<mail_body_split.length; i++) { // 配列のデータの数(改行の行数)だけ繰り返す
|
99
|
+
sheet.getRange(i+1,1).setValue(mail_body_split[i]); // 1行ごとに貼り付ける(貼り付けるセルを1行ずつ下にする)
|
100
|
+
}
|
101
|
+
```
|
102
|
+
|
101
103
|
実現可能な関数やコードについてアドバイスありましたら
|
102
104
|
ご教示いただけますでしょうか。
|
103
105
|
|
2
情報管理の観点から一部削除
title
CHANGED
File without changes
|
body
CHANGED
@@ -86,8 +86,10 @@
|
|
86
86
|
###試したこと
|
87
87
|
|
88
88
|
**実行結果**
|
89
|
+
|
89
90
|
実行結果先:SpreadSheet参照
|
90
91
|
|
92
|
+
|
91
93
|
**<課題>**
|
92
94
|
①余分な改行やスペースが多いので削除したい
|
93
95
|
→改行コードを他のものに変換できる関数を使うべきでしょうか?
|
1
なし
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,14 +82,11 @@
|
|
82
82
|
######SpreadSheetに1列ずつ改行されたデータを表整理したい
|
83
83
|
|
84
84
|
**★完成イメージ**
|
85
|
-

|
86
85
|
|
87
86
|
###試したこと
|
88
87
|
|
89
88
|
**実行結果**
|
90
|
-
]
|
91
89
|
実行結果先:SpreadSheet参照
|
92
|
-
<https://docs.google.com/spreadsheets/d/14aPnE4XPhKE0umTANhncOxMBHcgF5molXKec7BvPALw/edit#gid=1048866240>
|
93
90
|
|
94
91
|
**<課題>**
|
95
92
|
①余分な改行やスペースが多いので削除したい
|