首页 > 解决方案 > Google App 脚本:附加多个图像时出错(在对象 DriveApp 上获取方法或属性 getFileById 时出现意外错误)

问题描述

我正在编写一个自动脚本来从我的 Google 表格发送邮件,并且我想附加多个图像。只有一张图片一切都很好,但是当我想附加两个或更多时,它会给我这个错误消息:

异常:获取对象 DriveApp 上的方法或属性 getFileById 时出现意外错误。

这是我现在的代码:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 1; // First row of data to process
  var numRows = 3; // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 5);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i in data) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var message = row[1]; // Second column
    var image = DriveApp.getFileById(row[2]).getBlob();
    var image2 = DriveApp.getFileById(row[3]).getBlob();
    var subject = 'TAYDO 2021 Certificate';
  }

  MailApp.sendEmail({
    to:emailAddress, 
    subject:subject,   
    body:message,  
    attachments: [image.next(),image2]
  });
}

App 脚本具有运行此脚本所需的所有权限,并且工作表、驱动器和所有内容都在同一个 Google Acc 下。任何人都可以帮忙吗?提前致谢!

标签: javascriptemailgoogle-apps-scriptattachment

解决方案


这对我有用:

function attachimages() {
  let fldr = DriveApp.getFolderById(gobj.globals.imagesfolderid);
  let files = fldr.getFiles();
  let imgA = [];
  while(files.hasNext()) {
    let file = files.next();
    if(file.getName().slice(0,3) == 'die') {
      imgA.push(file.getBlob().getAs('image/jpeg'))
    }
  }
  MailApp.sendEmail({to:'jimesteban@jimesteban.com',subject:'Test Images Attachment',body: 'See Attached Images', attachments:imgA});
}

我的图像恰好被命名为 die1.jpg、die2.jpg .... 等等,它们是骰子面的图像。

这也对我有用:

function sendEmails() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet0');
  const rg = sh.getRange(2, 1, 3, 4);
  const vs = rg.getValues();
  vs.forEach((r, i) => {
    let emailAddress = r[0];
    let message = r[1];
    let image1 = DriveApp.getFileById(r[2].toString()).getBlob();
    let image2 = DriveApp.getFileById(r[3].toString()).getBlob();
    let subject = 'Test Attach Images';
    MailApp.sendEmail({ to: emailAddress, subject: subject, body: message, attachments: [image1, image2] });
  });
}

表0:

电子邮件 信息 图片1 图片2
已编辑 消息1 已编辑 已编辑
已编辑 消息2 已编辑 已编辑
已编辑 消息3 已编辑 已编辑

推荐阅读