0

この Google プロダクト フォーラム ページでこの質問を見つけました。私自身も同じ質問をしています。それを理解しようとしてきましたが、うまくいきません。誰かアイデアはありますか? http://veetrag.net/2011/01/25/mail-merge-in-gmail-with-attachment-support/でも同じメールマージを見つけました

「こんにちは、私はこのサイトhttp://www.it4smallbusiness.co.uk/web-applications/google-mailmergeにあるスプレッドシートを使用して差し込み印刷を行っています。各受信者に異なる添付ファイルを送信します。

たとえば、「結合するデータ」シートに、添付ファイル ID を保持する列を追加し、各添付ファイル ID を同じ行の電子メール アドレスに関連付けることができます。

50 個の PDF 添付ファイルがあるとします。それらすべてを Google ドキュメントにアップロードすると、それぞれに ID が割り当てられます。これは私が使用するIDです。

これを実現するためにスクリプトを編集しようとしましたが、理解できませんでした。何か案は?ありがとうございました!"

4

1 に答える 1

1

私はあなたの2 番目のリンクを見て、好奇心のコピーを作成しました...仕事の一部を手動で処理できれば、つまり ID を取得することができれば、あなたがやりたいことは非常に簡単に達成できるようです。追加するすべての添付ファイル。

これらのファイルをインポートして、それぞれをスクリプト内のすべての電子メールに割り当てることもできますが、それでは全体がより複雑になります。

ID を取得する準備ができていると仮定すると、「マージされるデータ」シート (col F) に 5 番目の列を追加し、次のようにスクリプトを変更する必要があります (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);
      ...

ここに画像の説明を入力

于 2013-08-24T19:11:13.293 に答える