###前提
GASでスプレッドシートの改行を取り除きたい
###<実行結果> ※改行コードを取り除く前
これまでGmail本文からテキストを抽出してシートに貼り付け
###<実現したいこと>
①最初の表整理
・余分な改行コードを取り除く
・1つセルに格納された文字を抽出して、2つのセルに分別(A列:英文字,B列:数字)
②2つ目の表整理
・余分な改行コードを取り除く
・1列に転記されたものを横に転置する
それぞれ完成イメージのように整理データで保存したいです。
①と②を実現できるGASコードについてアドバイスいただけますでしょうか。
よろしくお願いいたします。
###<実行コード②> 空白削除&データ整理(文字列と数字の分割)
下記にGmail本文&表のスクレイピング、そしてアドバイスに従い
空白削除および表整理の処理コードを追加しました。
function getMail() { /* メールを検索し本文を変数に保存 */ var threads = GmailApp.search('subject:Softbank Daily Results - SIM Box Detection'); // メールを検索し一覧を取得 var thread_top = threads[0]; // そのうちいちばん新しいメールを取得 //var mail_body = thread_top.getMessages()[0].getPlainBody(); // <br/>タグなしの本文を取得 ※本文のHTMLテキストが表示されず var mail_body = thread_top.getMessages()[0].getBody(); // 本文のテキストを取得 //var mail_body_split = mail_body.split(/\r\n|\r|\n/); // メールの本文を改行ごとに配列に格納 /* テキストに含まれているHTMLタグを除去する */ var str = mail_body; var str2 = str.replace(/<('[^']*'|'[^']*'|[^''>])*>/g,''); //()内の文字列を空欄に置き換え /* HTMLテキストの前置き箇所を除外 */ var str3 = str2.replace('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',''); var str4 = str3.replace(/<!-- tell the browser to not use it's cache for this page -->/g ,""); var str5 = str4.replace(/body {font-weight:normal; font-size:14px; background-color:#cccccc; font-family:Arial, Helvetica, sans-serif; margin:0px;}/g ,''); var str6 = str5.replace(/table.contentwithborder {border:1px solid black;border-collapse:collapse;text-align:left;vertical-align:top;}/g, ''); var str7 = str6.replace(/td.grid {border:1px solid black;text-align:left;border-collapse:collapse;}/g,''); var str8 = str7.replace(/td.transposecolgrid {background-color:#f6f6f6;}/g, ''); var str9 = str8.replace(/SIGOS SBD REPORTING Report/g ,''); /* 表の件名のみ抽出 */ var str11 = str9.replace('<span style="color:#000080; line-height:150%; padding-left:5px"><strong></strong></span>', ''); /* 表フォーマットの除外 */ var str12 = str11.replace('<table style="font-size:-12px;font-weight: normal; font-style: normal;border:1px solid; border-collapse:collapse;">' ,''); /* Daily test overviewの表タグを除外 */ var str13 = str12.replace('<table style="border-collapse:collapse;font-size:12px;font-weight: normal; font-style: normal;text-align:right;background-color:#f6f6f6;">' ,''); var str14 = str13.replace('<tr style="background-color:#ffffff;color:#000000;font-size:12px;text-align:center;vertical-align:center;">', ''); 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>', ''); 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>', ''); /* 表項目のタグ置換え */ 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>', ''); /* 表データのタグ置換え */ var str18 = str17.replace('<td class = "grid" style="text-align:right;vertical-align:center;border:1px solid; border-collapse:collapse;"></th>', ''); Logger.log(str18.replace(' ','')); var mail_body_split = str18.split(/\r\n/); // メールの本文を改行ごとに配列に格納 /* シート名用にタイムスタンプを取得 */ var today = new Date(); // 現在のタイムスタンプを取得 var timestamp = today.getFullYear()+"/"+(today.getMonth()+1)+"/"+today.getDate(); // タイムスタンプを整形(YYYY/MM/DD) /* シートを追加(シート名はタイムスタンプ */ var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); objSpreadsheet.insertSheet(timestamp); /* シートの移動(上記で作成したシートに移動) */ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getSheetByName(timestamp); spreadsheet.setActiveSheet(sheet); /* セルにデータを追加(A1のセル) */ for(var i=0; i<mail_body_split.length; i++) { // 配列のデータの数(改行の行数)だけ繰り返す sheet.getRange(i+1,1).setValue(mail_body_split[i]); // 1行ごとに貼り付ける(貼り付けるセルを1行ずつ下にする) } /* 空行を削除 Bパターン */ var str19 = mail_body_split.replace(/\n+/g, "\n"); // 文字列と数字を分割 var str20 = str19; var numberIndex = str20.search(/\d/); var str21= str20.slice(0, numberIndex); // var str21= str20.slice(numberIndex); // 12345 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/21 06:27
2017/09/21 07:15