2017-07-18 137 views
1

こんにちは私はメールのPlainBodyの内容を抽出しようとしていました。あなたの入力が1つのセルに最大50000文字を超えています。Google Script:「あなたの入力には1つのセルに最大50000文字以上含まれています」

このエラーを回避するために、Google Appスクリプトで抽出する文字数の制限はどのように設定しますか?

function getEmailsRange() { 

    //Change sheet3 to sheet you would like the data to be pasted 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw"); 
    sheet.getRange('A1:D15000').clearContent(); 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    //maximum emails to be extracted 500 
    //is:unread in:MANILA 
    var threads = GmailApp.search("after:2017/5/5 before:2017/5/6 in:REPORT",0,500); 
    var menuEntries = [ {name: "Load Emails", functionName: "getEmails"} ]; 
    spreadsheet.addMenu("Email Extract", menuEntries); 
    var row = 1; 
    for (var i = 0; i < 50000; i++) { 
    var messages=threads[i].getMessages(); 
    for (var m=0; m < messages.length; m++) { 

     sheet.getRange(row,4).setValue(messages[m].getDate()); 
     sheet.getRange(row,2).setValue(messages[m].getPlainBody()); 
     sheet.getRange(row,1).setValue(messages[m].getSubject()); 
     sheet.getRange(row,3).setValue(messages[m].getFrom()); 
     row++; 

    } 
    } 
} 
//var ss = SpreadsheetApp.getActiveSpreadsheet(); 


function Deleterow() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Processed'); // change to your own 
    var values = s.getDataRange().getValues(); 

    for (var row in values) 
    if (values[row][5] == 'DELETE') 
     s.deleteRow(parseInt(row)+1); 
}; 

<code>Error Encountered</code>

答えて

2

あなたはスプレッドシート内のセルに電子メールの本文を設定すると、セルが50000個の以上の文字を持つことができないので、問題があります。

sheet.getRange(row,2).setValue(messages[m].getPlainBody()); 

sheet.getRange(row,2).setValue(messages[m].getPlainBody()..substring(0, 50000)); 

にこれが細胞内にのみ最初の50000個の文字を追加します。

は、次の行を変更することができます。他のオプションは、複数のセルに電子メールを抽出するか、電子メールをGoogleドキュメントに抽出することです。

関連する問題