首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无效论证:纬度。应该是类型: number (文件Code.gs,第22行)-谷歌广告脚本

无效论证:纬度。应该是类型: number (文件Code.gs,第22行)-谷歌广告脚本
EN

Stack Overflow用户
提问于 2019-11-15 10:21:40
回答 1查看 88关注 0票数 0

目前,我正试图通过如下脚本将纬度和经度值从工作表导入到我的Google广告活动中:

代码语言:javascript
运行
复制
function main() {
  var SPREADSHEET_URL = 'https://docs.google.com/spreadsheets/d/17w74flZ3AD7r7wIbAoYYkffUuJfxGB0-a9lhjBStzW4/edit#gid=0';
  var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
  var sheet = spreadsheet.getActiveSheet();
  var data = sheet.getRange("A:E").getValues();
  for (i in data) {
    if (i == 0) {
      continue;  
    }

    var [CampaignName, latitude, longitude, radius, unit] = data[i];

    if (CampaignName == "") {
      break;
    }
    else {
      var campaignIterator = AdWordsApp.campaigns()
        .withCondition("CampaignName CONTAINS_IGNORE_CASE '" + CampaignName +"'")
        .get();
      while (campaignIterator.hasNext()) {
        var campaign = campaignIterator.next();
        campaign.addProximity(latitude, longitude, radius, unit);
      }
    }
  }
}

但是,在运行脚本时,我一直得到错误“无效参数:纬度。应该是类型: number (文件Code.gs,第22行)”,我做错了什么?(此外,工作表链接对任何人都是开放的,这是一个备份,所以不用担心)。

EN

回答 1

Stack Overflow用户

发布于 2019-11-15 11:53:44

适当地过滤和格式化数据,这样就足够了:

代码语言:javascript
运行
复制
function main() {
  var SPREADSHEET_URL = 'https://docs.google.com/spreadsheets/d/17w74flZ3AD7r7wIbAoYYkffUuJfxGB0-a9lhjBStzW4/edit#gid=0';
  var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
  var sheet = spreadsheet.getActiveSheet();
//Note you get only relevant data ranges
  var range = sheet.getDataRange();
  var data = range.getValues();
//Now we got only non blank cells
  for (i in data) {
    if (i == 0) {
      continue;  
    }

    var [CampaignName, latitude, longitude, radius, unit] = data[i];

// Parse strings to float
    latitude = parseFloat(latitude);
    longitude = parseFloat(longitude);
    radius = parseFloat(radius);
// End of data conversion

    if (CampaignName == "") {
      break;
    }
    else {
      var campaignIterator = AdWordsApp.campaigns()
        .withCondition("CampaignName CONTAINS_IGNORE_CASE '" + CampaignName +"'")
        .get();
      while (campaignIterator.hasNext()) {
        var campaign = campaignIterator.next();
        campaign.addProximity(latitude, longitude, radius, unit);
      }
    }
  }
}

我补充了两件事:

  • 这个getDataRange()函数只获得非平凡的数据,所以您不会得到很多空白行。

我保留了您的if(CampaignName == "")条件,以避免出现错误,以防在数据行之间出现空行。

  • 第二个是parseFloat,它将字符串转换为数字,并解决初始问题。

作为小贴士:

将电子表格数字单元格格式化为numbers有助于导入过程,因为您将导入这些单元格,而不需要将其转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58874932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档