AWQL(AdWords查询语言)寻求多种范围查询(各种)

时间:2015-01-29 22:23:21

标签: javascript mysql reporting dynamic-queries

好的,这可能是“你真正问的是什么”的问题,所以请耐心等待一下。作为一项规则,我是一名.NET和SQL开发人员。我正在使用AWQL尝试获取adwords脚本来制作量身定制的报告。 简短的版本,我需要从不同的日期范围拉出来,我有问题弄清楚他们如何处理“编译器”或者甚至可能做什么。简而言之,我需要将两个月的数据分别编译成一份报告。现在我正在考虑语法错误,但不确定。 极客术语中的最终目标是“WHERE(IMPRESSIONS_FROM_THIS_MONTH> IMPRESSIONS_FROM_LAST_MONTH)和(IMPRESSIONS_FROM_LAST_MONTH> MONTH_BEFORE_THAT)的效果。理论上所有在同一输出中(不关心它是记录器还是直接到谷歌文档。我做有代码将这个放入电子表格并通过电子邮件发送给我链接),但目前正努力让它获取数据。而通过挣扎我的意思是几天失败大声笑。

"SELECT KeywordText, ConversionValue, Id, QualityScore " +
  "FROM KEYWORDS_PERFORMANCE_REPORT " +
   "WHERE " +
   "Id = " + kw +
   " AND CampaignId = " + id +
   " AND AdGroupId = " + gName +
   " AND Impressions" +
   " (DURING 20150101, 20150131) > IMPRESSIONS (DURING 20141201, 20141231)" );             

(像gName这样的变量在完整代码btw中存在并且一直工作直到我尝试复合逻辑)我不确定最好的方法是一次查询它,还是单独查询并以某种方式将结果拼接成一份报告。 AdWords脚本似乎比我习惯的要严格得多,而且它的一些规则没有得到很好的记录或解释。 任何与此相关的链接或代码块?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这段代码应该有所帮助。将所有变量替换为适合您的目的。

var daterange1 ="Specify daterange here";
var dateRange2 ="Specify daterange here"; 
    function main(){      
      var sheet = getSheet();
      var AccountIterator = MccApp.accounts().forDateRange(dateRange).withIds(ACCOUNTS).get();
      while(AccountIterator.hasNext()){
        var Account = AccountIterator.next();


        MccApp.select(Account);
            getAccountDetails(sheet);
            getAccountDetails2(sheet)

          }

    }



       function getAccountDetails(sheet){
          var query = "SELECT  Device, CampaignName, ConversionValue, Cost, Conversions " +" FROM CAMPAIGN_PERFORMANCE_REPORT " +"WHERE Impressions > 0 " +" DURING "+dateRange;
          Logger.log(query);
          var report = AdWordsApp.report(query);
          report.exportToSheet(sheet);
        }

    function getAccountDetails2(sheet){
          var query = "SELECT  Device, CampaignName, ConversionValue, Cost, Conversions " +" FROM CAMPAIGN_PERFORMANCE_REPORT " +"WHERE Impressions > 0 " +" DURING "+dateRange;
          Logger.log(query);
          var report = AdWordsApp.report(query);
          report.exportToSheet(sheet);
        }

        function getSheet(){
          var spreadsheet = SpreadsheetApp.openByUrl(url);
          var sheet=spreadsheet.setActiveSheet(spreadsheet.getSheets()[0]);

      return sheet;
    }

我没有优化它,因为自己做这件事是一个很好的练习。但这将解决您的问题。