2013-07-12 1 views
2

Я пишу простой скрипт, чтобы отменить некоторые номера отчетов. Я получаю сообщение об ошибке «Отсутствует, перед заявлением». Это, похоже, не является точным описанием проблемы.Скрипт Google Apps: странный «Отсутствует, перед заявлением». error

Я пробовал пропустить фрагменты кода, но сообщение об ошибке кажется довольно стохастическим. Я подозреваю какую-то проблему с некоторыми из классов, которые я использую, но у меня нет идей.

Вот мой код:

function getStats() { 
    var stats = {'id': '', 
       'impressions': 0, 
       'clicks': 0, 
       'conversions': 0, 
       'cpa': 0, 
       'cost': 0}, 
     campaignIterator = AdWordsApp.campaigns().get(), 
     campaign, 
     campaignstats; 

    Logger.log('Fetching stats for last 7 days.'); 

    while (campaignIterator.hasNext()) { 
    var campaign = campaignIterator.next(); 
    var campaignstats = campaign.getStatsFor('LAST_7_DAYS'); 
    var stats['impressions'] = stats['impressions'] + campaignstats.getImpressions(); 
    var stats['clicks'] = stats['clicks'] + campaignstats.getClicks(); 
    var stats['conversions'] = stats['conversions'] + campaignstats.getConversions(); 
    var stats['cost'] = stats['cost'] + campaignstats.getCost(); 
    } 

    var stats['cpa'] = stats['cost']/stats['conversion']; 
} 

function main() { 
    getStats(); 
} 

Спасибо за любую помощь!

+0

Запустите свой код через linter: напр. http://www.jshint.com/ – RobH

+0

На какой строке появляется ошибка? – Sirko

+0

Нет упоминания о линии, к сожалению. Это встроенная среда IDE с ограниченной функциональностью. – Sammy

ответ

2

Извлеките инструкцию var из каждой строки в цикле while и из инструкции после него.

Помимо того, что все эти переменные уже определены (хотя переопределение одной и той же переменной не вызывает ошибки), у вас есть синтаксические ошибки, потому что вы не можете включать квадратные скобки в объявления переменных следующим образом:

var stats['impressions'] = ... 

Попробуйте это:

while (campaignIterator.hasNext()) { 
    campaign = campaignIterator.next(); 
    campaignstats = campaign.getStatsFor('LAST_7_DAYS'); 
    stats['impressions'] += campaignstats.getImpressions(); 
    stats['clicks'] += campaignstats.getClicks(); 
    stats['conversions'] += campaignstats.getConversions(); 
    stats['cost'] += campaignstats.getCost(); 
} 

stats['cpa'] = stats['cost']/stats['conversion']; 

Отметим также, что я взял на себя смелость введения += operator. Следующие два утверждения эквивалентны, но последние менее типичны и (возможно) более легки для чтения:

x[y] = x[y] + z; 
x[y] += z; 
+0

Работает отлично. Спасибо за Ваш ответ. – Sammy

 Смежные вопросы

  • Нет связанных вопросов^_^