2013-08-22 2 views
0

Эй, я нашел этот вопрос на this Google product forums page, и у меня есть тот же вопрос. пытались понять это, но не могли заставить его работать, у кого есть идеи? я также обнаружил ту же MailMerge на http://veetrag.net/2011/01/25/mail-merge-in-gmail-with-attachment-support/Mail Merge с различным вложением для каждого получателя

«Привет всем, Я использую таблицу, опубликованный на этом сайте http://www.it4smallbusiness.co.uk/web-applications/google-mailmerge сделать слияние почты. Он отлично работает, за исключением, что я хочу, чтобы иметь возможность отправить другое приложение к каждый получатель.

Например, если на «Данные, которые будут объединены» лист я мог бы добавить столбец, который содержит идентификаторы вложений и ассоциированных друг вложение ID с адресом электронной почты на одной и той же строке.

Скажем я имеют 50 вложений PDF. Я загружаю их все в документы Google, и каждый из них будет иметь идентификатор. Это идентификатор, который я бы использовал.

Я попытался отредактировать сценарий, чтобы достичь этого, но не мог понять это. Есть идеи? Спасибо! »

ответ

1

Я взглянул на ваш second link и сделал копию любопытства ... Кажется, что то, что вы хотите сделать, может быть довольно легко достигнуть, если вы можете иметь дело с частью работы, например, получение идентификаторов всех вложений, которые вы хотите добавить.

Также может быть возможно импортировать эти файлы и назначить каждый из них каждому письму в скрипте, но это сделало бы все это более сложным.

Предполагая, что вы готовы получить идентификаторы, вы должны добавить 5-й столбец на листе «данные для объединения» (col F) и изменить сценарий следующим образом (я воспроизвожу только соответствующую часть, начинающуюся по строке 70: function runMailMerge() {)

function runMailMerge() { 

    //set up the status column, so it's blank, and pink 
    var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data to be merged"); //used later in updating the status box 
    var totalRows=sheet.getMaxRows(); 
    var range=sheet.getRange(2,1,totalRows,1); 
    var failed=false; 
    range.clearContent(); 
    range.setBackgroundRGB(230,153,153); 
    if (totalRows>25) Browser.msgBox("It will take some time to send all these emails. There are more than 25 rows, so we're using the slower mode, to send as many as possible. See the Instructions and Settings sheet for details."); 

    ScriptProperties.setProperty('newLine',"<br><br>"); 
    settingsDataRange=setProperties(); 
    var mergeDataValues=getMergeDataValues(); 
    var arrayOfTags=mergeDataValues[0]; //gets the first row 


    //run through the remaining rows 
    for (i=1; i<mergeDataValues.length; i++) { //loops through the rows in the merge sheet. Misses 0, which is column headings 
    try { 
     var thisEmailAddress=mergeDataValues[i][2]; 
     var thisEmailText=ScriptProperties.getProperty('genericEmailText'); 
     var thisEmailSubject=ScriptProperties.getProperty('subject'); 
     var arrayOfValues=mergeDataValues[i]; 
     for (j=1; j<arrayOfTags.length; j++) { //loops through the columns 
     var replaceData=arrayOfValues[j];  
     var tag=ScriptProperties.getProperty('before')+arrayOfTags[j]+ScriptProperties.getProperty('after'); 
     while (thisEmailText.search(tag)>=0) { //loop through, to ensure we replace every occurence of "tag" 
      thisEmailText=thisEmailText.replace(tag,arrayOfValues[j]); 
      thisEmailSubject=thisEmailSubject.replace(tag,arrayOfValues[j]); 
     } 
     } 
     thisEmailText=thisEmailText.replace(/\n/g,"<br>"); //ensure any linebreaks from Google doc are carried to the HTML version. The /g means all occurences. 

     //create a plain text version, by swapping <br> for \n, and stripping any other HTML tags 
     var plainEmailText=thisEmailText.replace(/<br>/g,"\n"); 
     plainEmailText=stripHTML(plainEmailText); 
     var attachmentFiles = []; 
     var ID = sheet.getRange(i+1,5).getValue(); 
     Logger.log(ID); 
     var pdf = DocsList.getFileById(ID); 
     attachmentFiles.push(pdf); 
     var advancedArgs = {htmlBody:thisEmailText, name:ScriptProperties.getProperty('senderName'), replyTo:ScriptProperties.getProperty('replyTo'), attachments:attachmentFiles }; 

     MailApp.sendEmail(thisEmailAddress,thisEmailSubject, plainEmailText, advancedArgs); 
     var range=sheet.getRange(i+1,1); 
     ... 

enter image description here

+0

Привет и спасибо за вашу помощь. Я добавил столбец attacment и отредактировал сценарий, но после того, как скрипт выполнил свой курс, строка состояния в листе mailMerge говорит «Не удалось», и никакая почта не была отправлена. Я попробовал разные ID.s – Dengeln

+0

Было бы неплохо, если бы вы могли отправить слишком 5-6 разных вложений, тоже тот же адрес электронной почты. – Dengeln

Смежные вопросы