2016-08-13 5 views
0

特定のメールの本文にテーブルが含まれているシートスクリプトがあります。これまではこれまでうまくいきましたが、私は今、単一セルの問題で50000文字制限に達しました。私が使っていた:google appsスクリプトの出力メールの本文行by

=転置(スプリット(「C1」、CHAR(10)、TRUE))

をラインによるコンテンツの行を分割するために、今必要なスクリプトにこの代わりに、なるように電子メール本文は、1行ずつ行単位でシートに配信されます。

これにはどのような方法が最適ですか?

おかげ

答えて

0

は答え、前の質問にすべての手がかりを提供し、ここでのエリートレスポンダ(セルジュ/ Mogsdad /サンディら)、のおかげで、最終的に自分自身をそれを考え出しました。最初にSergeのgetMessageコードを使用する。 appendRowを使用するよりも良い方法ですが、メッセージの不適切な形式のHTMLコンテンツでは機能しないものがあります(たとえば、行を配列に配置すると範囲幅に関するエラーが発生しました)。私のスクリプトは、選択したラベルを持つ最新のメールを1通だけ呼び出します。以下は

はそれをカバーして機能です:

function getMessageWithLabel() { 
var destArray = new Array(); 
    var threads = GmailApp.getUserLabelByName('<GMailLabel>').getThreads(0,1); 

    for(var n in threads){ 
     var msg = threads[n].getMessages(); 
     var destArrayRow = new Array(); 
     destArrayRow.push('thread has '+threads[n].getMessageCount()+' messages'); 
      for(var m in msg){ 
      destArrayRow.push(msg[m].getBody()); 
      } 
    destArray.push(destArrayRow);   
     } 

    //open spreadsheet and set sheet for appending data 
    var ss = SpreadsheetApp.openById('<Google Spreadsheet ID>'); 
    var sh5 = ss.getSheets()[4]; 

    //get number of lines in content 
    var lines = destArrayRow[0].split('\n'); 
    var length = lines.length; 

    //appendRow for each line in content 
    for (var i = 0; i <= length; i++) { 
    sh5.appendRow([lines[i]]); 
    } 

} 
関連する問題