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

如何将Gmail指定标签每日首封邮件数同步至Google Sheets并修复报错?

解决Gmail同步脚本「TypeError: Cannot read properties of null (reading 'getName')」报错的方法

这个报错本质是代码里尝试读取一个null对象的getName()方法,结合你的需求,大概率是标签不存在或线程首封邮件获取失败导致的,直接按下面步骤修复就行:

1. 确认并校验Gmail标签

  • 打开Gmail,确保你要统计的标签拼写完全一致(大小写、空格、标点都不能错),比如标签叫「客户咨询」就不能写成「客户咨询 」(末尾带空格)
  • 在代码里找到获取标签的行,加上非空判断,避免标签不存在时报错:
    var label = GmailApp.getUserLabelByName("你的标签名");
    if (!label) {
      SpreadsheetApp.getUi().alert("指定的Gmail标签不存在,请检查拼写!");
      return;
    }
    

2. 处理线程首封邮件为空的情况

有些邮件线程可能因为删除、权限问题导致首封邮件无法获取,直接调用属性会报错,加上判断跳过这些异常线程:

var threads = label.getThreads();
var dailyCount = {};

for (var i = 0; i < threads.length; i++) {
  var firstMsg = threads[i].getMessages()[0];
  // 跳过首封邮件不存在的线程
  if (!firstMsg) continue;
  var date = Utilities.formatDate(firstMsg.getDate(), Session.getScriptTimeZone(), "yyyy-MM-dd");
  dailyCount[date] = (dailyCount[date] || 0) + 1;
}

3. 完整可运行的示例代码

把上面的修正整合,给你一个适合新手的完整脚本:

function syncGmailThreadCountToSheet() {
  // 替换成你的Gmail标签名
  var targetLabelName = "你的指定标签";
  // 替换成你的Google Sheets工作表名称
  var sheetName = "统计结果";

  // 获取并校验标签
  var label = GmailApp.getUserLabelByName(targetLabelName);
  if (!label) {
    SpreadsheetApp.getUi().alert("错误:未找到「" + targetLabelName + "」标签,请检查拼写!");
    return;
  }

  // 获取并校验工作表
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  if (!sheet) {
    SpreadsheetApp.getUi().alert("错误:未找到「" + sheetName + "」工作表,请检查名称!");
    return;
  }

  // 统计每日首封邮件数
  var threads = label.getThreads();
  var dailyCount = {};
  for (var i = 0; i < threads.length; i++) {
    var firstMsg = threads[i].getMessages()[0];
    if (!firstMsg) continue;
    var dateStr = Utilities.formatDate(firstMsg.getDate(), Session.getScriptTimeZone(), "yyyy-MM-dd");
    dailyCount[dateStr] = (dailyCount[dateStr] || 0) + 1;
  }

  // 写入工作表
  sheet.getDataRange().offset(1, 0).clearContent();
  var row = 2;
  for (var date in dailyCount) {
    sheet.getRange(row, 1).setValue(date);
    sheet.getRange(row, 2).setValue(dailyCount[date]);
    row++;
  }

  SpreadsheetApp.getUi().alert("同步完成!共统计" + Object.keys(dailyCount).length + "天的数据");
}

使用步骤

  1. 打开你的Google Sheets,点击「扩展程序」→「Apps脚本」
  2. 把上面的代码粘贴进去,修改targetLabelName和sheetName为你的实际信息
  3. 点击运行按钮,第一次会弹出授权提示,按步骤完成授权即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:05:26