【问题标题】:AWQL (AdWords Query Language) Seeking Multiple Range Query (of sorts)AWQL(AdWords 查询语言)寻求多范围查询(各种)
【发布时间】:2015-01-29 22:23:20
【问题描述】:

好的,这可能是“你实际上在问什么”的问题,所以请耐心等待。通常,我是 .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 这样的变量,并且在我尝试复合逻辑之前一直在工作)我不确定最好的方法是一次查询它,还是单独查询并以某种方式将结果拼接到一份报告。 AdWords 脚本编写似乎比我习惯的要严格得多,而且它的一些规则没有得到很好的记录或解释。 任何与此相关的链接或代码块?提前感谢您的帮助!

【问题讨论】:

    标签: javascript mysql reporting dynamic-queries


    【解决方案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;
        }
    

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

    【讨论】:

    • 谢谢。我一直在想我必须运行多个查询。希望它不会超过允许的运行时间。
    • 好的,显然“输入”在这里不是新行,哈哈。无论如何,我很欣赏这一点。我想在这个版本的 AdWords 脚本编辑器上,只需要一个大查询就太令人期待了,但希望它正在开发中。和非常好的骨架代码!这正是我需要概述一个好的方法。再次感谢我的朋友!
    • 我试图支持你的回复,但我猜新手在这里做不到。不过试过了!
    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2012-08-11
    • 2019-11-06
    • 2013-05-10
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多