2017-07-19 6 views
0

Google Scriptを使用してスプレッドシートに自動的にメールを送信するようにこのJSを作成しました。 残念ながら、重複チェックが機能していないため、bcc行によってエラーが発生します。 実際には、毎回最終回答のメールのみをスプレッドシートに送信したいと思います。 私を助けることができますか?あなたが余分なコンマを入れ原因Googleスクリプトを使用した自動重複チェックとBCC

var EMAIL_SENT = "EMAIL_SENT"; 
 

 
function sendEmails2() { 
 
    var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var startRow = 2; 
 
    var numRows = active; 
 
    var dataRange = sheet.getRange(startRow, 1, numRows, 14) 
 
    var data = dataRange.getValues(); 
 
    for (var i = 0; i < data.length; ++i) { 
 
    var row = data[i]; 
 
    var name = row[2]; 
 
    var surname = row[3]; 
 
    var salesRepEmail = row[4]; 
 
    var qualityAnalystEmail = "[email protected]" 
 
    var customerEmail = row[5]; 
 
    var websiteURL = row[6]; 
 
    var solution1 = row[7]; 
 
    var solution2 = row[8]; 
 
    var solution3 = row[9]; 
 
    var toResolve1 = row[10]; 
 
    var toResolve2 = row[11]; 
 
    var toResolve3 = row[12]; 
 
    var checkDate = row[13]; 
 
    var message = 'Bonjour '+ name + ' ' + surname + ', ' + 'blablabla'; 
 
    var emailSent = row[14];  // Third column 
 
    if (emailSent != EMAIL_SENT) { // Prevents sending duplicates 
 
     var subject = "Votre Optimisation De Site Mobile pour " +websiteURL; 
 
     MailApp.sendEmail(customerEmail, subject, message, { 
 
     cc: "", 
 
     bcc: qualityAnalystEmail,+ " " + salesRepEmail, 
 
     }); 
 
     sheet.getRange(startRow + i, 15).setValue(EMAIL_SENT); 
 
     // Make sure the cell is updated right away in case the script is interrupted 
 
     SpreadsheetApp.flush(); 
 
    } 
 
    } 
 
}

+0

私はアクティブ= VARのnumRowsの数を理解していません。何が活発ですか? –

+0

お返事ありがとうございました。私は空白のものではなく、内容を含む最後の行を取得しようとしています –

+0

ドキュメントを見てください。役立ちます。最後の行を取得するには、単に[getLastRow()メソッド](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getLastRow())を使用してください –

答えて

0

あなたのコードでは、BCCラインにトリガされます。 documentationに見られるように、BCCパラメータは、お使いのCASでBCC

電子メールアドレスのカンマ区切りリスト

文字列である必要があり、あなたが持っているshould'nt:

bcc: qualityAnalystEmail,+ " " + salesRepEmail

しかし:

bcc: qualityAnalystEmail + ", " + salesRepEmail 

与える:

MailApp.sendEmail(customerEmail, subject, message, { 
     cc: "", 
     bcc: qualityAnalystEmail+ ", " + salesRepEmail 
     }); 

+0

唯一の事は、私も空白の電子メールを避けるために探していますか?スプレッドシートの最後のアクティブな行についてのみ電子メールを送信したいのですが、これは動作しません。 –

+0

bcc行トリガーのヘルプも求めます。関数の結果でなければならないことについて助けが必要な場合は、データの例と探しているものを追加するか、スプレッドシートのサンプルを追加して作業の見やすさを向上させる必要があります。 –

+0

こんにちはピエールマリー、私はコメントでそれをやった、良い一日を持って、助けてくれてありがとう –

0

はどうもありがとうございました(あなたがまた良いではありません、あなたのBCCパラメータの後に余分なコンマを入れて)、件のデータおよびスクリプトの下に見つけてください。

Google Scriptletを使用して、後でHTMLに変数を呼び出そうとします。現時点では、単純なテキストで十分です。それはそのように働いているようですが、コードはきれいではありません。

Image Du Tableau

// This constant is written in column O for rows for which an email 
 
// has been sent successfully. 
 
var EMAIL_SENT = "EMAIL_SENT"; 
 

 
function testSchemas() { { 
 
    var sheet = SpreadsheetApp.getActiveSheet(); 
 
    var startRow = sheet.getLastRow(); 
 
    var numRows = 1; // Number of rows to process 
 
    var dataRange = sheet.getRange(startRow, 1, numRows, 15) 
 
    // Fetch values for each row in the Range. 
 
    var data = dataRange.getValues(); 
 
    for (var i = 0; i < data.length; ++i) { 
 
    var row = data[i]; 
 
    var name = row[2]; 
 
    var surname = row[3]; 
 
    var salesRepEmail = row[4]; 
 
    var qualityAnalystEmail = "[email protected]" 
 
    var customerEmail = row[5]; 
 
    var websiteURL = row[6]; 
 
    var solution1 = row[7]; 
 
    var solution2 = row[8]; 
 
    var solution3 = row[9]; 
 
    var toResolve1 = row[10]; 
 
    var toResolve2 = row[11]; 
 
    var toResolve3 = row[12]; 
 
    var checkDate = row[13]; 
 
    function doGet() { 
 
    return HtmlService 
 
     .createTemplateFromFile('Index') 
 
     .evaluate(); 
 
} 
 

 
    Logger.log(doGet); 
 
    var htmlBody = HtmlService.createHtmlOutputFromFile('Index').getContent(); 
 
    var message = 'Bonjour '+ name + ' ' + surname + ', ' + 'c\'est avec grand plaisir que je vous écris pour résumer ... - '+solution1+' \n\n- '+solution2+' \n\n- '+solution3+' \n\nMalgré...'; 
 
    var emailSent = row[14];  // Third column 
 
    if (emailSent != "EMAIL_SENT") { // Prevents sending duplicates 
 
    /*MailApp.sendEmail(customerEmail, subject, message, { 
 
     cc: "", 
 
     bcc: qualityAnalystEmail + ", " + salesRepEmail 
 
     }); */ 
 
    MailApp.sendEmail({ 
 
    to: customerEmail, 
 
    bcc: qualityAnalystEmail + ", " + salesRepEmail, 
 
    subject: 'Résumé De Notre Consultation Du Site Mobile ' + websiteURL, 
 
    htmlBody: htmlBody, 
 
    }); 
 
} 
 
     Logger.log(name); 
 
     sheet.getRange(startRow + i, 15).setValue(EMAIL_SENT); 
 
     // Make sure the cell is updated right away in case the script is interrupted 
 
     SpreadsheetApp.flush(); 
 
    } 
 
    } 
 
}

関連する問題