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

Google Ads脚本调用sendEmail发送CSV附件出现内容截断问题求助

故障排查与解决方向

报告拉取环节问题

  • 优先检查Google Ads报告拉取逻辑:Google Ads API默认返回分页数据,即使总数据量很小也不会一次性返回全量,多数截断问题是仅拉取了第一页数据导致,确认你在遍历报告行时完整执行了report.hasNext()的全量循环,没有中途跳出。
  • 可以强制指定分页大小拉全量:调用AdsApp.report()时新增分页参数{pageSize: 10000},超过你预期的3100行,避免分页逻辑出错。
  • 拉取完成后先打印日志验证行数:Logger.log('报告总行数:' + csvContent.split('\n').length),确认是拉取阶段就丢失了数据,还是后续发送阶段才出现截断。

CSV内容生成环节问题

  • 避免手动拼接CSV字符串:单元格内如果存在换行、双引号、逗号等特殊字符,未做转义处理会导致后续内容被识别为无效内容直接截断。建议统一处理单元格转义,每个单元格内容用双引号包裹,内容中原有的双引号替换为两个双引号。
  • 不要用缓存类存储中间CSV内容:ScriptProperties、CacheService都有单条值存储上限,如果你把CSV内容存在这类服务里再读取,会触发上限自动截断,中间内容直接存在变量里即可。

邮件发送环节问题

  • 检查附件构造逻辑:不要直接把字符串放入attachments参数,必须转成指定编码的Blob,正确写法参考:
const csvBlob = Utilities.newBlob('', 'text/csv', '广告报告.csv')
  .setDataFromString(csvContent, 'UTF-8')
MailApp.sendEmail({
  to: '收件人邮箱',
  subject: '广告数据报告',
  attachments: [csvBlob]
})
  • 如果你怀疑是发送环节截断,可以先把生成的Blob存入Google Drive,检查Drive中的文件是否完整:DriveApp.createFile(csvBlob),如果Drive文件正常但邮件附件截断,检查是否有邮箱服务商的附件过滤规则干扰。

脚本环境异常修复

  • 你提到复制到新脚本可正常运行,大概率是旧脚本的授权状态或运行缓存异常:可以进入旧脚本的「项目设置」-「查看授权」,撤销原有授权后重新触发一次运行,重新获取完整权限。
  • 清除旧脚本所有已存储的缓存值、属性值,避免历史错误数据干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:36:05