質問編集履歴
4
内容訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
下記にGmail本文&表のスクレイピング、そしてアドバイスに従い
|
46
46
|
|
47
|
-
空白削除
|
47
|
+
空白削除および表整理の処理コードを追加しました。
|
48
48
|
|
49
49
|
|
50
50
|
|
3
コード追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,7 +40,13 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
###<実
|
43
|
+
###<実行コード②> 空白削除&データ整理(文字列と数字の分割)
|
44
|
+
|
45
|
+
下記にGmail本文&表のスクレイピング、そしてアドバイスに従い
|
46
|
+
|
47
|
+
空白削除などデータ整理のコードを追加しました。
|
48
|
+
|
49
|
+
|
44
50
|
|
45
51
|
```ここに言語を入力
|
46
52
|
|
2
内容の体裁確認
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
###<実現結果②> 空白削除&
|
43
|
+
###<実現結果②> 空白削除&文字列
|
44
44
|
|
45
45
|
```ここに言語を入力
|
46
46
|
|
1
アドバイスに基づいた実行結果を反映
test
CHANGED
File without changes
|
test
CHANGED
@@ -37,3 +37,155 @@
|
|
37
37
|
|
38
38
|
|
39
39
|
よろしくお願いいたします。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
###<実現結果②> 空白削除&
|
44
|
+
|
45
|
+
```ここに言語を入力
|
46
|
+
|
47
|
+
function getMail() {
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
/* メールを検索し本文を変数に保存 */
|
52
|
+
|
53
|
+
var threads = GmailApp.search('subject:Softbank Daily Results - SIM Box Detection'); // メールを検索し一覧を取得
|
54
|
+
|
55
|
+
var thread_top = threads[0]; // そのうちいちばん新しいメールを取得
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
//var mail_body = thread_top.getMessages()[0].getPlainBody(); // <br/>タグなしの本文を取得 ※本文のHTMLテキストが表示されず
|
60
|
+
|
61
|
+
var mail_body = thread_top.getMessages()[0].getBody(); // 本文のテキストを取得
|
62
|
+
|
63
|
+
//var mail_body_split = mail_body.split(/\r\n|\r|\n/); // メールの本文を改行ごとに配列に格納
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
/* テキストに含まれているHTMLタグを除去する */
|
68
|
+
|
69
|
+
var str = mail_body;
|
70
|
+
|
71
|
+
var str2 = str.replace(/<('[^']*'|'[^']*'|[^''>])*>/g,''); //()内の文字列を空欄に置き換え
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
/* HTMLテキストの前置き箇所を除外 */
|
76
|
+
|
77
|
+
var str3 = str2.replace('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">','');
|
78
|
+
|
79
|
+
var str4 = str3.replace(/<!-- tell the browser to not use it's cache for this page -->/g ,"");
|
80
|
+
|
81
|
+
var str5 = str4.replace(/body {font-weight:normal; font-size:14px; background-color:#cccccc; font-family:Arial, Helvetica, sans-serif; margin:0px;}/g ,'');
|
82
|
+
|
83
|
+
var str6 = str5.replace(/table.contentwithborder {border:1px solid black;border-collapse:collapse;text-align:left;vertical-align:top;}/g, '');
|
84
|
+
|
85
|
+
var str7 = str6.replace(/td.grid {border:1px solid black;text-align:left;border-collapse:collapse;}/g,'');
|
86
|
+
|
87
|
+
var str8 = str7.replace(/td.transposecolgrid {background-color:#f6f6f6;}/g, '');
|
88
|
+
|
89
|
+
var str9 = str8.replace(/SIGOS SBD REPORTING Report/g ,'');
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
/* 表の件名のみ抽出 */
|
94
|
+
|
95
|
+
var str11 = str9.replace('<span style="color:#000080; line-height:150%; padding-left:5px"><strong></strong></span>', '');
|
96
|
+
|
97
|
+
/* 表フォーマットの除外 */
|
98
|
+
|
99
|
+
var str12 = str11.replace('<table style="font-size:-12px;font-weight: normal; font-style: normal;border:1px solid; border-collapse:collapse;">' ,'');
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
/* Daily test overviewの表タグを除外 */
|
104
|
+
|
105
|
+
var str13 = str12.replace('<table style="border-collapse:collapse;font-size:12px;font-weight: normal; font-style: normal;text-align:right;background-color:#f6f6f6;">' ,'');
|
106
|
+
|
107
|
+
var str14 = str13.replace('<tr style="background-color:#ffffff;color:#000000;font-size:12px;text-align:center;vertical-align:center;">', '');
|
108
|
+
|
109
|
+
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>', '');
|
110
|
+
|
111
|
+
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>', '');
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
/* 表項目のタグ置換え */
|
116
|
+
|
117
|
+
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>', '');
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
/* 表データのタグ置換え */
|
122
|
+
|
123
|
+
var str18 = str17.replace('<td class = "grid" style="text-align:right;vertical-align:center;border:1px solid; border-collapse:collapse;"></th>', '');
|
124
|
+
|
125
|
+
Logger.log(str18.replace(' ',''));
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
var mail_body_split = str18.split(/\r\n/); // メールの本文を改行ごとに配列に格納
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
/* シート名用にタイムスタンプを取得 */
|
134
|
+
|
135
|
+
var today = new Date(); // 現在のタイムスタンプを取得
|
136
|
+
|
137
|
+
var timestamp = today.getFullYear()+"/"+(today.getMonth()+1)+"/"+today.getDate(); // タイムスタンプを整形(YYYY/MM/DD)
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
/* シートを追加(シート名はタイムスタンプ */
|
142
|
+
|
143
|
+
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
|
144
|
+
|
145
|
+
objSpreadsheet.insertSheet(timestamp);
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
/* シートの移動(上記で作成したシートに移動) */
|
150
|
+
|
151
|
+
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
|
152
|
+
|
153
|
+
var sheet = spreadsheet.getSheetByName(timestamp);
|
154
|
+
|
155
|
+
spreadsheet.setActiveSheet(sheet);
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
/* セルにデータを追加(A1のセル) */
|
160
|
+
|
161
|
+
for(var i=0; i<mail_body_split.length; i++) { // 配列のデータの数(改行の行数)だけ繰り返す
|
162
|
+
|
163
|
+
sheet.getRange(i+1,1).setValue(mail_body_split[i]); // 1行ごとに貼り付ける(貼り付けるセルを1行ずつ下にする)
|
164
|
+
|
165
|
+
}
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
/* 空行を削除 Bパターン */
|
170
|
+
|
171
|
+
var str19 = mail_body_split.replace(/\n+/g, "\n");
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
// 文字列と数字を分割
|
176
|
+
|
177
|
+
var str20 = str19;
|
178
|
+
|
179
|
+
var numberIndex = str20.search(/\d/);
|
180
|
+
|
181
|
+
var str21= str20.slice(0, numberIndex); //
|
182
|
+
|
183
|
+
var str21= str20.slice(numberIndex); // 12345
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
}
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
```
|