You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets邮件脚本优化:文件缺失时跳过并标记问题

解决Google Sheets邮件脚本文件缺失停止运行的问题

原脚本在Google Drive指定文件夹找不到目标文件时会停止运行,需修改为标记“文件未找到”并继续批量发送邮件,以下是修改后的完整脚本:

1. 邮件发送主脚本(修改版)

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName('Gas');
  var sheet2 = ss.getSheetByName('Email Gas');
  var subject = sheet2.getRange(2,1).getValue();
  var n = sheet1.getLastRow();

  var folderID = displayPrompt("Enter folder ID:");

  for (var i = 2; i < n+1 ; i++ ) {
    var emailAddress = sheet1.getRange(i,3).getValue();
    var date = sheet2.getRange(6,5).getValue();
    var message = sheet2.getRange(2,2).getValue();
    var documentName = '.xlsx';
    var name = sheet1.getRange(i,2).getValue();
    var finalfile = getFileFromFolder(folderID, name, documentName);
    message = message.replace("<Date>", date);

    let status;
    if (!finalfile) {
      status = "文件未找到";
    } else {
      try {
        MailApp.sendEmail(emailAddress, subject, message, {attachments: [finalfile.getAs(MimeType.MICROSOFT_EXCEL)]});
        status = "Sent";
      } catch(err) {
        status = "Failed";
      }
    }
    sheet1.getRange(i,4).setValue(status);
  }
}

修改点:

  • 新增对finalfile的存在性判断,若返回null则直接标记“文件未找到”
  • 简化状态变量逻辑,用setValue替代setValues(单值无需二维数组)
  • 变量名Date改为小写date,避免与内置对象冲突

2. 输入folderID的提示脚本(无修改)

function displayPrompt(question) {
  var ui = SpreadsheetApp.getUi();
  var result = ui.prompt(question);
  return result.getResponseText();
}

3. 获取附件的脚本(修改版)

function getFileFromFolder(folderID, filename, docType) {
  var folder = DriveApp.getFolderById(folderID);
  var files = folder.getFilesByName(filename + docType);
  
  if (files.hasNext()) {
    return files.next();
  } else {
    return null;
  }
}

修改点:

  • 补全函数声明(原代码缺失函数定义头部)
  • 未找到文件时返回null,而非尝试返回未定义的file变量
  • 移除无用的ss变量声明和error数组操作,简化逻辑

核心逻辑说明

  1. 获取文件的函数在未找到目标文件时返回null,避免抛出错误中断脚本
  2. 主脚本循环中先检查文件是否存在:
    • 若不存在,直接在表格第4列标记“文件未找到”
    • 若存在,执行邮件发送逻辑,根据结果标记“Sent”或“Failed”
  3. 所有情况都不会中断循环,确保批量发送完成后统一排查缺失文件

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:40:56