附加多个文件-Google表格/ Gmail /驱动器

时间:2019-03-01 16:45:27

标签: javascript google-apps-script google-sheets google-api google-sheets-api

我目前有一个脚本来创建电子邮件草稿,并在其中附加文件。当前,该脚本不适用于多个文件附件,如果没有附件,该脚本也将不起作用。

有关如何获得[1]和[2]的任何提示[下]

已更新以获取更多信息:

主要目的是在Col [3]中添加多个文件名,并使用Col [3]中提供的文件名将文件附加到草稿中。示例:如果我在Col [3]中输入以下内容:“ test.pdf,test2.pdf” 它将为该特定草案附加文件“ test.pdf”和“ test2.pdf”。 目前,该脚本确实将单个文件附加到草稿,但是如果我输入多个用逗号分隔的文件名,则根本不会创建草稿。

我已附上运行脚本时电子表格的外观的屏幕截图(当前无法嵌入图片):

https://imgur.com/a/sVoHO3Q

当我使用屏幕快照中的信息运行脚本时,第二行根本不会创建草稿,第三行会创建带有附件的草稿,而第四行根本不会创建草稿。

是否可以创建草稿并使用逗号分隔的文件名附加多个文件,并且在Col [3]中的某些单元格为空时还可以创建草稿?

TLDR:

  1. 如何将多个文件附加到单个草稿

  2. 如何创建不带任何附件的草稿

function SaveDrafts() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var rows = 1000;
  var dataRange = sheet.getRange(startRow, 1, rows, 5);
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];
    var subject = row[1];
    var message = row[2];
    var pdfName = row[3];
    var cc = row[4];
    var list = DriveApp.getFilesByName(pdfName);

    if (list.hasNext()) {
      var File = list.next();
      GmailApp.createDraft(emailAddress, subject, message, {
        cc: cc,
        attachments: [File]
      });
    }
  }
}

1 个答案:

答案 0 :(得分:0)

更新: 首先,我对split()单元格的值执行了pdfName,因此我可以一次搜索并添加一个文件。

草稿创建仅在有文件的情况下运行,因为它位于list if语句中,没有文件表示它不会运行。

我从中退出并创建了an interator for list和一个可以分配给createDraft()函数的文件数组。如果files返回多个文件,则迭代器允许将多个文件添加到DriveApp.getFilesByName(pdfName)数组中。

function SaveDrafts() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var rows = 1000;
  var dataRange = sheet.getRange(startRow, 1, rows, 5);
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];
    var subject = row[1];
    var message = row[2];
    var pdfName = row[3].split(','); //split the values taken from cell into array
    var cc = row[4];

    var files = []; //initialize files as empty array.

    for(var j in pdfName){ //run through cell values and perform search
      var results = DriveApp.getFilesByName(pdfName[j]); //Perform the search,results is a FileIterator

      while(results.hasNext()) { //Interate through files found and add to attachment results
        files.push(results.next()); //Add files to array
      }
    }

    GmailApp.createDraft(emailAddress, subject, message, {
      cc: cc,
      attachments: files //the attachments option takes our files array
    });

  }
}