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

如何用Google Apps Script将谷歌表格转为仅值Excel并邮件发送且存云端副本

实现谷歌表格转数值版Excel并发送邮件+存云端硬盘的脚本

以下是完整的Google Apps Script代码,直接替换占位符后即可使用:

function convertSheetToExcelAndSend() {
  // 替换为你的原谷歌表格ID
  const sourceSpreadsheetId = "YOUR_SPREADSHEET_ID";
  // 替换为收件人邮箱
  const recipientEmail = "recipient@example.com";
  // 替换为邮件主题
  const emailSubject = "仅含数值的Excel文件";
  // 替换为邮件正文
  const emailBody = "您好,附件是转换后的Excel文件(仅含数值)。";
  // 替换为要保存文件的云端硬盘文件夹ID(可选,留空则保存到根目录)
  const targetFolderId = "YOUR_FOLDER_ID";

  try {
    // 1. 获取原表格并创建临时副本
    const sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId);
    const tempSpreadsheet = SpreadsheetApp.create("临时数值表格");
    const sourceSheets = sourceSpreadsheet.getSheets();

    // 2. 将原表格的所有工作表内容(仅数值)复制到临时表
    sourceSheets.forEach(sheet => {
      const tempSheet = tempSpreadsheet.insertSheet(sheet.getName());
      const sourceRange = sheet.getDataRange();
      sourceRange.copyTo(tempSheet.getRange(1,1), {contentsOnly: true});
    });

    // 删除临时表默认的第一个空白工作表
    tempSpreadsheet.deleteSheet(tempSpreadsheet.getSheets()[0]);

    // 3. 将临时表导出为Excel格式
    const tempFileId = tempSpreadsheet.getId();
    const tempFile = DriveApp.getFileById(tempFileId);
    const excelBlob = tempFile.getAs(MimeType.MICROSOFT_EXCEL);
    excelBlob.setName(`${sourceSpreadsheet.getName()}_仅数值版.xlsx`);

    // 4. 将Excel文件保存到云端硬盘
    let savedFile;
    if (targetFolderId) {
      const targetFolder = DriveApp.getFolderById(targetFolderId);
      savedFile = targetFolder.createFile(excelBlob);
    } else {
      savedFile = DriveApp.createFile(excelBlob);
    }

    // 5. 发送带附件的邮件
    MailApp.sendEmail({
      to: recipientEmail,
      subject: emailSubject,
      body: emailBody,
      attachments: [savedFile]
    });

    // 6. 清理临时表格(可选,若需保留可注释此行)
    DriveApp.getFileById(tempFileId).setTrashed(true);

    console.log("操作完成:Excel已保存并发送邮件");
  } catch (error) {
    console.error("操作失败:", error);
    // 可选:发送错误通知邮件
    // MailApp.sendEmail(recipientEmail, "转换失败通知", `错误信息:${error.message}`);
  }
}

关键代码说明

  • 替换公式为数值:使用copyTo方法时传入{contentsOnly: true},确保只复制单元格的数值结果,而非原公式。
  • 导出Excel格式:通过getAs(MimeType.MICROSOFT_EXCEL)将谷歌表格文件转换为Excel的Blob对象,再设置文件名。
  • 保存到云端硬盘:根据指定的文件夹ID,将Blob对象创建为文件;若未指定文件夹ID,则保存到云端硬盘根目录。
  • 发送邮件:MailApp.sendEmail支持直接传入云端硬盘文件作为附件,无需额外处理。

注意事项

  1. 替换代码中所有大写的占位符(如YOUR_SPREADSHEET_ID),你可以在谷歌表格的URL中找到表格ID,云端硬盘文件夹ID同理。
  2. 首次运行脚本时,会弹出权限授权提示,按照步骤完成授权即可(需使用谷歌账号登录)。
  3. 临时表格默认会被移到回收站,若需要保留临时表用于调试,可注释掉setTrashed(true)这一行。
  4. 若你的表格包含多个工作表,脚本会全部复制并转换,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:06:37