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

如何修改Google Apps Script使多附件名匹配对应单元格值?

问题解决:为邮件附件设置对应工作表的单元格名称

问题场景

发送带多附件的邮件时,两个附件名称完全相同。虽然工作表HANG III,IV-Q.1和HANG II-Q.1的I6单元格值不同,但最终只有HANG II-Q.1对应的附件名是正确的,需要让每个附件名称对应各自工作表的I6单元格值。

原代码问题分析

在forEach循环中,连续两次给name变量赋值,第二次的赋值直接覆盖了第一次,导致无论处理哪个工作表的导出链接,附件名都会被设置为HANG II-Q.1的I6值。此外,MailApp.sendEmail(message)语句写在了sendtwo函数外部,会导致执行报错。

修改后的代码

function sendtwo() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 关联工作表名称与对应的导出URL
  const sheetUrlPairs = [
    {
      sheetName: "HANG III,IV-Q.1",
      url: `https://docs.google.com/spreadsheets/d/${ss.getId()}/export?format=xlsx&gid=${ss.getSheetByName("HANG III,IV-Q.1").getSheetId()}`
    },
    {
      sheetName: "HANG II-Q.1",
      url: `https://docs.google.com/spreadsheets/d/${ss.getId()}/export?format=xlsx&gid=${ss.getSheetByName("HANG II-Q.1").getSheetId()}`
    }
  ];

  const urlA = [];
  
  sheetUrlPairs.forEach(pair => {
    const params = {
      method: "GET",
      headers: {
        authorization: `Bearer ${ScriptApp.getOAuthToken()}`
      }
    };
    // 根据当前工作表名称获取对应I6单元格值作为附件名
    const name = `${ss.getSheetByName(pair.sheetName).getRange('I6').getValue()}.xlsx`;
    urlA.push(UrlFetchApp.fetch(pair.url, params).getBlob().setName(name));
  });

  const date = Utilities.formatDate(new Date(), "GMT+7", "dd-MM-yyyy")
  const message = {
    to: "example@gmail.com",
    subject: `Example Subject ${date}`,
    body: "Lorem ipsum...",
    name: "Example Name",
    attachments: urlA
  };
  // 将邮件发送逻辑移至函数内部
  MailApp.sendEmail(message);
}

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu("Example Menu").addItem("Example Item", "sendtwo").addToUi();
}

关键修改点

  • 将工作表名称和导出URL封装为对象数组,明确两者对应关系
  • 循环时根据当前对象的sheetName获取对应I6单元格值,避免变量覆盖
  • 把MailApp.sendEmail(message)移动到sendtwo函数内部,确保能正确读取message并执行发送

内容的提问来源于stack exchange,提问作者English for kids

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:28:07