我正在尝试修改Adwords API中PHP脚本示例中提供的类。
我很擅长在PHP中使用Objects,所以我无法弄清楚如何让它工作。
我想修改下面的脚本,以便将关键字数组作为变量传递,从而替换以下所包含的关键字:
$relatedToQuerySearchParameter->setQueries([
'bakery', 'pastries', 'birthday cake'
]);
也许通常会将其用作函数:
function GetKeywordIdeas($array_keywords){...}
然后将结果输入变量
以下是示例中的代码:
<?php
/**
* Copyright 2017 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Google\AdsApi\Examples\AdWords\v201710\Optimization;
require __DIR__ . '/../../../../vendor/autoload.php';
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201710\cm\Language;
use Google\AdsApi\AdWords\v201710\cm\NetworkSetting;
use Google\AdsApi\AdWords\v201710\cm\Paging;
use Google\AdsApi\AdWords\v201710\o\AttributeType;
use Google\AdsApi\AdWords\v201710\o\IdeaType;
use Google\AdsApi\AdWords\v201710\o\LanguageSearchParameter;
use Google\AdsApi\AdWords\v201710\o\NetworkSearchParameter;
use Google\AdsApi\AdWords\v201710\o\RelatedToQuerySearchParameter;
use Google\AdsApi\AdWords\v201710\o\RequestType;
use Google\AdsApi\AdWords\v201710\o\SeedAdGroupIdSearchParameter;
use Google\AdsApi\AdWords\v201710\o\TargetingIdeaSelector;
use Google\AdsApi\AdWords\v201710\o\TargetingIdeaService;
use Google\AdsApi\Common\OAuth2TokenBuilder;
use Google\AdsApi\Common\Util\MapEntries;
/**
* This example gets keyword ideas related to a seed keyword.
*/
class GetKeywordIdeas {
// If you do not want to use an existing ad group to seed your request, you
// can set this to null.
const AD_GROUP_ID = 'INSERT_AD_GROUP_ID_HERE';
const PAGE_LIMIT = 500;
public static function runExample(AdWordsServices $adWordsServices,
AdWordsSession $session, $adGroupId) {
$targetingIdeaService =
$adWordsServices->get($session, TargetingIdeaService::class);
// Create selector.
$selector = new TargetingIdeaSelector();
$selector->setRequestType(RequestType::IDEAS);
$selector->setIdeaType(IdeaType::KEYWORD);
$selector->setRequestedAttributeTypes([
AttributeType::KEYWORD_TEXT,
AttributeType::SEARCH_VOLUME,
AttributeType::AVERAGE_CPC,
AttributeType::COMPETITION,
AttributeType::CATEGORY_PRODUCTS_AND_SERVICES
]);
$paging = new Paging();
$paging->setStartIndex(0);
$paging->setNumberResults(10);
$selector->setPaging($paging);
$searchParameters = [];
// Create related to query search parameter.
$relatedToQuerySearchParameter = new RelatedToQuerySearchParameter();
$relatedToQuerySearchParameter->setQueries([
'bakery', 'pastries', 'birthday cake'
]);
$searchParameters[] = $relatedToQuerySearchParameter;
// Create language search parameter (optional).
// The ID can be found in the documentation:
// https://developers.google.com/adwords/api/docs/appendix/languagecodes
$languageParameter = new LanguageSearchParameter();
$english = new Language();
$english->setId(1000);
$languageParameter->setLanguages([$english]);
$searchParameters[] = $languageParameter;
// Create network search parameter (optional).
$networkSetting = new NetworkSetting();
$networkSetting->setTargetGoogleSearch(true);
$networkSetting->setTargetSearchNetwork(false);
$networkSetting->setTargetContentNetwork(false);
$networkSetting->setTargetPartnerSearchNetwork(false);
$networkSearchParameter = new NetworkSearchParameter();
$networkSearchParameter->setNetworkSetting($networkSetting);
$searchParameters[] = $networkSearchParameter;
// Optional: Use an existing ad group to generate ideas.
if (!empty($adGroupId)) {
$seedAdGroupIdSearchParameter = new SeedAdGroupIdSearchParameter();
$seedAdGroupIdSearchParameter->setAdGroupId($adGroupId);
$searchParameters[] = $seedAdGroupIdSearchParameter;
}
$selector->setSearchParameters($searchParameters);
$selector->setPaging(new Paging(0, self::PAGE_LIMIT));
// Get keyword ideas.
$page = $targetingIdeaService->get($selector);
// Print out some information for each targeting idea.
$entries = $page->getEntries();
if ($entries !== null) {
foreach ($entries as $targetingIdea) {
$data = MapEntries::toAssociativeArray($targetingIdea->getData());
$keyword = $data[AttributeType::KEYWORD_TEXT]->getValue();
$searchVolume =
($data[AttributeType::SEARCH_VOLUME]->getValue() !== null)
? $data[AttributeType::SEARCH_VOLUME]->getValue() : 0;
$averageCpc = $data[AttributeType::AVERAGE_CPC]->getValue();
$competition = $data[AttributeType::COMPETITION]->getValue();
$categoryIds =
($data[AttributeType::CATEGORY_PRODUCTS_AND_SERVICES]->getValue()
=== null)
? $categoryIds = '' : implode(
', ',
$data[AttributeType::CATEGORY_PRODUCTS_AND_SERVICES]->getValue()
);
printf(
"Keyword with text '%s', average monthly search volume %d, "
. "average CPC %d, and competition %.2f "
. "was found with categories: %s\n",
$keyword,
$searchVolume,
($averageCpc === null) ? 0 : $averageCpc->getMicroAmount(),
$competition,
$categoryIds
);
}
}
if (empty($entries)) {
print "No related keywords were found.\n";
}
}
public static function main() {
// Generate a refreshable OAuth2 credential for authentication.
$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile()
->build();
// Construct an API session configured from a properties file and the OAuth2
// credentials above.
$session = (new AdWordsSessionBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->build();
self::runExample(new AdWordsServices(), $session, self::AD_GROUP_ID);
}
}
GetKeywordIdeas::main();
感谢您的帮助或解释。
答案 0 :(得分:1)
您需要在代码中更改4行。 1。
public static function main() {
到
public static function main($array_keywords) {
和2.
self::runExample(new AdWordsServices(), $session, self::AD_GROUP_ID);
到
self::runExample(new AdWordsServices(), $session, self::AD_GROUP_ID, $array_keywords);
和3.
public static function runExample(AdWordsServices $adWordsServices,
AdWordsSession $session, $adGroupId) {
到
public static function runExample(AdWordsServices $adWordsServices,
AdWordsSession $session, $adGroupId, $array_keywords) {
和4.
$relatedToQuerySearchParameter->setQueries([
'bakery', 'pastries', 'birthday cake'
]);
到
$relatedToQuerySearchParameter->setQueries($array_keywords);
然后你可以这样称呼它:
GetKeywordIdeas::main($array_keywords);
答案 1 :(得分:0)
回答评论,将关键字作为数组返回:
您需要插入和更改几行:
在此之前:
foreach ($entries as $targetingIdea) {
插入
$keywords = [];
$keyword = $data[AttributeType::KEYWORD_TEXT]->getValue();
后的
插入$keywords[] = $keyword;
在这些行之前
}
if (empty($entries)) {
插入return $keywords;
更改self::runExample(new AdWordsServices(), $session, self::AD_GROUP_ID, $array_keywords);
到return self::runExample(new AdWordsServices(), $session, self::AD_GROUP_ID, $array_keywords);
然后将其称为$keywords = GetKeywordIdeas::main($array_keywords);