Я взглянул на ваш 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);
...
Привет и спасибо за вашу помощь. Я добавил столбец attacment и отредактировал сценарий, но после того, как скрипт выполнил свой курс, строка состояния в листе mailMerge говорит «Не удалось», и никакая почта не была отправлена. Я попробовал разные ID.s – Dengeln
Было бы неплохо, если бы вы могли отправить слишком 5-6 разных вложений, тоже тот же адрес электронной почты. – Dengeln