当前位置: 首页 > 知识库问答 >
问题:

Google Adwords API的问题

张建树
2023-03-14
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

$path = dirname(__FILE__) . '/../../../';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once 'Google/Api/Ads/AdWords/Lib/AdWordsUser.php';

$adwords_username = "myusername@gmail.com";
$adwords_password = "mypassword";
$adwords_developerToken = "mydevelopertoken";
$user = new AdWordsUser(null, $adwords_username, $adwords_password, $adwords_developerToken);
$user->SetDefaultServer("https://adwords.google.com/");

//set Adwords Client Id
$user->SetClientCustomerId('111111111');

$str_group = GetAdGroup($user, "v201509");
echo $str_group;

function GetAdGroup(AdWordsUser $user, $adwords_version) {
    // Get the service, which loads the required classes.
    $adgroupService = $user->GetService('AdGroupService', $adwords_version);

    // Create selector.
    $selector = new Selector();
    $selector->fields = array('Id', 'Name', 'CampaignId', 'Status');
    $selector->ordering[] = new OrderBy('CampaignId', 'ASCENDING');

    // Filter out deleted criteria.
    $selector->predicates[] = new Predicate('Status', 'NOT_IN', array('DELETED', 'PAUSED'));

    // Create paging controls.
    $selector->paging = new Paging(0, AdWordsConstants::RECOMMENDED_PAGE_SIZE);

    $ret = array();
    do {
    //echo "<pre>";print_r($selector);die;
        // Make the get request.
        $page = $adgroupService->get($selector);

        // Display results.
        if (isset($page->entries)) {
            foreach ($page->entries as $adgroup) {
                //printf("AdGroup with name '%s' and id '%s' was found for Campaign: '%s' and Status: '%s'\n",
                // $adgroup->name, $adgroup->id, $adgroup->campaignId, $adgroup->status);
                $ret[] = array(
                    'name' => $adgroup->name,
                    'id' => $adgroup->id,
                    'campaignId' => $adgroup->campaignId,
                    'active' => (strcmp($adgroup->status,'ENABLED')==0)?1:0
                );
            }
        } else {
            //print "No adgroups were found.\n";
        }
        // Advance the paging index.
        $selector->paging->startIndex += AdWordsConstants::RECOMMENDED_PAGE_SIZE;
    } while ($page->totalNumEntries > $selector->paging->startIndex);
    return $ret;
}

function GetKeywords(AdWordsUser $user, $adGroupId, $days, $adwords_version) {
    // Get the service, which loads the required classes.
    $adGroupCriterionService = $user->GetService('AdGroupCriterionService', $adwords_version);

    // Create selector.
    $selector = new Selector();

    $selector->fields = array('KeywordText', 'KeywordMatchType', 'Id', 'AverageCpc', 'AveragePosition', 'Clicks', 'Conversions', 'Cost', 'Ctr', 'Impressions', 'QualityScore', 'Status');
    $selector->ordering[] = new OrderBy('KeywordText', 'ASCENDING');

    // Create predicates.
    $selector->predicates[] = new Predicate('AdGroupId', 'IN', array($adGroupId));
    $selector->predicates[] = new Predicate('CriteriaType', 'IN', array('KEYWORD'));
    $selector->predicates[] = new Predicate('Status', 'IN', array('ACTIVE'));
    $selector->predicates[] = new Predicate('Impressions', 'GREATER_THAN', array('1'));

    $dateRange = new DateRange();
    $str1 = '-1 days';
    $str2 = '-1 days';
    if ($days > 0) {
    $str1 = '-' . $days . ' days';
    $str2 = '-' . $days . ' days';
    }
    $dateRange->min = date('Ymd', strtotime($str1));
    $dateRange->max = date('Ymd', strtotime($str2));
    $selector->dateRange = $dateRange;

    // Create paging controls.
    $selector->paging = new Paging(0, AdWordsConstants::RECOMMENDED_PAGE_SIZE);

    $ret = array();

    do {
    // Make the get request.
    $page = $adGroupCriterionService->get($selector);

    // Display results.
    if (isset($page->entries)) {
        foreach ($page->entries as $adGroupCriterion) {
        $cr = 0;
        if ($adGroupCriterion->stats->clicks > 0)
            $cr = $adGroupCriterion->stats->conversions / $adGroupCriterion->stats->clicks;

        $ret[] = array(
            'name' => $adGroupCriterion->criterion->text,
            'type' => $adGroupCriterion->criterion->matchType,
            'id' => $adGroupCriterion->criterion->id,
            'clicks' => $adGroupCriterion->stats->clicks,
            'cpc' => $adGroupCriterion->stats->averageCpc->microAmount / 1000000,
            'conversions' => $adGroupCriterion->stats->conversions,
            'cost' => $adGroupCriterion->stats->cost->microAmount / 1000000,
            'ctr' => $adGroupCriterion->stats->ctr,
            'impressions' => $adGroupCriterion->stats->impressions,
            'qualityfactor' => $adGroupCriterion->qualityInfo->qualityScore,
            'cr' => $cr,
            'position' => $adGroupCriterion->stats->averagePosition
        );
        }
    } else {
        //print "No keywords were found.\n";
    }

    // Advance the paging index.
    $selector->paging->startIndex += AdWordsConstants::RECOMMENDED_PAGE_SIZE;
    } while ($page->totalNumEntries > $selector->paging->startIndex);
    return $ret;
}

共有1个答案

嵇浩然
2023-03-14
__construct($authenticationIniPath = null,
      $developerToken = null, $userAgent = null, $clientCustomerId = null,
      $settingsIniPath = null, $oauth2Info = null)

$user = new AdWordsUser(null, $adwords_username, $adwords_password, $adwords_developerToken);
 类似资料:
  • 这个FAQ的最新版本总是可以从Apache主站点得到,位于<http://httpd.apache.org/docs/2.2/faq/> 如果你的问题在这里没有找到答案,你也可以看看Apache 1.3 FAQ ,看你的问题是否在那里有了答案。 主题 背景 关于 Apache HTTP Server 的背景知识。 支持 我遇到问题该怎么办? 错误信息 这些错误信息是什么意思? 背景 什么是Apac

  • 我试图在fabric rocket chat上联系,但没有得到太多帮助,因此在SO上发布了它。我有以下疑问: 我们是否可以在链码内访问块高度(我知道这在客户端是可行的,但在链码内是否可能) 可以从链码中的正在进行的事务调用新事务吗? 想知道hyperledger Fabric中存储的数据的历史记录在哪里 我们可以根据链码中的transactionid进行查询吗? 在fabric链码中编写调度程序是

  • 问题内容: 我正在尝试创建一个程序,在该程序中,用户可以使用扫描仪将值输入到数组中。 但是,当程序要求学生的近亲时,它不会让用户输入任何内容而直接结束程序。 下面是我完成的代码: 我试过使用next(); 但只会使用用户输入的第一个单词,这不是我想要的。反正有解决这个问题的方法吗? 问题答案: 当您按Enter键(换行符)时,会出现问题。仅使用整数,但跳过换行符。要解决此问题,您可能需要在阅读后添

  • 我必须回到这个论坛寻求帮助,因为我不能仍然使‘承诺.所有’工作! 第一,我有这个函数,按说是回一个承诺: 其思想是上面的函数返回一个promise,其值一旦解析,就是json对象。我已经检查了json实际上是有效的。如果我用下面的行替换“return...”行,我实际上会得到一个有效的JSON: 第二,我有这个for循环,之后我希望有一系列承诺: 最终我执行以下代码: 我希望.then部分只在所有

  • null log4j2.xml将默认记录器根日志级别设置为info。但有时我需要指定debug。 在Windows PowerShell上执行上述命令行时出现错误 我尝试了-dlog4j.configurationfile=file://log4j.configurationfile=./log4j2.xml或-dlog4j.configurationfile=./log4j2.xml或-dlog

  • 比如现在有个接口,地址是/api/user/info 那么最终转发后的地址是 http://aaa.com/api/user/info 如果规则改成这样,在转发地址后加个/, 最终转发后的地址是: http://aaa.com/user/info 原因是什么呢?为什么转发地址后加/就会把/api给剃掉呢? 还有写成 /api 和 /api/ 好像效果是一样的,这两者的区别在哪呢?

  • 问题内容: 我正在尝试运行声纳运行器,我的项目目录中有蝙蝠文件,当我通过命令提示符导航至该文件并尝试运行它时,我收到一条错误消息,提示 错误:JAVA_HOME存在,但没有指向有效的Java主文件夹。在此找不到“ \ bin \ java.exe”文件。 如果我回显Java_Home的路径,它也指向 $ C:\ Program Files(x86)\ Java \ jdk1.7.0_15 \ bi

  • 我与一直存在权限问题。 我无法运行或。它给了我以下错误: AttributeError:“\u NamespacePath”对象没有“sort”属性 但是,将执行罚款。然后再次