目前,我正试图通过如下脚本将纬度和经度值从工作表导入到我的Google广告活动中:
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行)”,我做错了什么?(此外,工作表链接对任何人都是开放的,这是一个备份,所以不用担心)。
发布于 2019-11-15 11:53:44
适当地过滤和格式化数据,这样就足够了:
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);
}
}
}
}
我补充了两件事:
我保留了您的if(CampaignName == "")
条件,以避免出现错误,以防在数据行之间出现空行。
作为小贴士:
将电子表格数字单元格格式化为numbers有助于导入过程,因为您将导入这些单元格,而不需要将其转换。
https://stackoverflow.com/questions/58874932
复制相似问题