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

如何在Google Apps Script中实现变量除以1000000并解决报错

问题解决

错误原因很明确:spendvalues是二维数组(结构类似[[1000000], [2000000]]),你直接执行spendvalues/1000000会把数组转换成单个无效数值(实际是NaN),而setValues()方法要求必须传入二维数组,所以参数类型不匹配导致报错。

修正方案

你需要在数组的每个元素上执行除法操作,而非直接对整个数组做除法,同时还要修正原代码里的values.length(你未定义values变量,应该用spendvalues.length)。

方案1:生成spendvalues时直接处理除法

在map遍历阶段就把stats.spend除以1000000:

var spendvalues = campaignstatsdata.total_stats.map(({ total_stat: { stats } }) => [stats.spend / 1000000])
sheet.getRange(3, 6, spendvalues.length).setValues(spendvalues);

方案2:单独处理已生成的spendvalues

如果需要保留原始的spendvalues,可以单独创建新数组处理:

var spendvalues = campaignstatsdata.total_stats.map(({ total_stat: { stats } }) => [stats.spend])
// 处理除法
var processedSpendValues = spendvalues.map(row => [row[0] / 1000000])
sheet.getRange(3, 6, processedSpendValues.length).setValues(processedSpendValues);

完整修正后的代码

function readData() {
  var accesstoken = "TOKEN"
  var sheet = SpreadsheetApp.getActiveSheet()
  
  var campaignstatsurl = "https://adsapi.snapchat.com/v1/campaigns/e431cbcd-2281-49fe-8d05-b26c87660eb5/stats?&granularity=TOTAL&fields=impressions,swipes,video_views,view_completion,spend,video_views_time_based"

  var campaignstatsurlresponse = UrlFetchApp.fetch(campaignstatsurl, {
    headers: {
      "Authorization": "Bearer " + accesstoken
    }
  });  

  var campaignstatsdata = JSON.parse(campaignstatsurlresponse.getContentText());

  // 直接在map中处理除法
  var spendvalues = campaignstatsdata.total_stats.map(({ total_stat: { stats } }) => [stats.spend / 1000000])
  // 修正length变量为spendvalues.length
  sheet.getRange(3, 6, spendvalues.length).setValues(spendvalues);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:38:23