次のセクションでは、キーワードに対してさまざまなアクションを実行するスクリプトの例を示します。
キーワードの追加
キーワードを追加するには、最初にキーワードを追加する広告グループを取得します。
AdGroupSelector オブジェクトを使用して、広告グループを選択します。 メソッドを使用すると、 withIds
メソッドで広告グループの名前を渡すよりもパフォーマンスが withCondition
向上します。
次に、広告グループの newKeywordBuilder メソッドを呼び出して、キーワードのプロパティを指定するために使用するビルダーを取得します。 指定する必要がある唯一のプロパティは、キーワードのテキストです (メソッドを withText
参照してください)。 テキストには、一致の種類 (語句の一致の種類の引用符、完全一致型の角かっこ、広範な一致型の場合は何も含めず) を含める必要があります。
クリック単価型 (CPC) の値を指定しない場合、既定では広告グループのクリック単価型 (CPC) の値が使用されます。 既定では、キーワードの状態は有効になっています。
ビルダー build
のメソッドを呼び出すと、 キーワードが非同期的に作成されます。スクリプトは、スクリプトが終了する前、またはビルド操作のいずれかのメソッドを呼び出す場合に、キーワードを追加します。 このプロセスの詳細については、「ビルダーとは」を参照してください。
function main() {
// The ID of the ad group to add the keywords to.
// IDs in Scripts are string integers.
var adGroupId = 'AD GROUP ID GOES HERE';
var adGroup = getAdGroup(adGroupId);
// Keywords to add. Update as appropriate.
var keywords = [];
keywords.push({
text : "keyword 1",
cpc : 1.25,
finalUrl : 'http://www.example.com'
});
keywords.push({
text : "keyword 2",
cpc : 1.5,
finalUrl : 'http://www.example.com'
});
var operations = [];
if (adGroup != null)
{
for (var keyword of keywords) {
var operation = addKeyword(
adGroup,
keyword.text,
keyword.cpc,
keyword.finalUrl);
operations.push(operation);
}
}
else {
Logger.log("Unable to retrieve ad group, " + adGroupId);
}
checkBuildStatus(operations, keywords);
}
// Get the ad group using its ID.
function getAdGroup(id) {
var iterator = AdsApp.adGroups()
.withIds([id])
.get();
// Return the ad group if it exists; otherwise, null.
if (iterator.hasNext()) {
return iterator.next();
}
else {
return null;
}
}
// Add the keyword to the specified ad group.
function addKeyword(adGroup, text, cpc, finalUrl) {
return adGroup.newKeywordBuilder()
.withText(text)
.withCpc(cpc)
.withFinalUrl(finalUrl)
.build();
}
// Check the keyword's build status.
function checkBuildStatus(operations, keywords) {
for (var i = 0; i < operations.length; i++) {
if (!operations[i].isSuccessful()) {
for (var error of operations[i].getErrors()) {
Logger.log(`Failed to add, ${keywords[i].text}. Error: ${error}`);
}
}
}
}
キーワードを一時停止する
キーワードを追加すると、その状態は既定で [有効] になります。 キーワードを一時停止するには、キーワードの pause
メソッドを呼び出します。 キーワードの状態を確認するには、キーワードの isEnabled
メソッドと isPaused
メソッドを呼び出します。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
var keywordText = 'KEYWORD TEXT GOES HERE';
var iterator = AdsApp.keywords()
.withCondition(`Text = '${keywordText}'`)
.withCondition(`AdGroupName = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
while (iterator.hasNext()) {
var keyword = iterator.next();
keyword.pause();
}
}
広告グループ内のすべてのキーワードを取得する
広告グループ内のすべてのキーワードを取得するには、まず AdsApp オブジェクトの keywords
メソッドを呼び出してセレクターを取得 します。 メソッドを withCondition
使用して、広告グループとキャンペーンを指定します。 次に、セレクターのメソッドを呼び出して、キーワードの get
一覧を反復処理するために使用する 反復子 を取得します。 反復子内のキーワードの数を確認するには、反復子の totalNumEntities
メソッドを呼び出します。
キーワード ID にアクセスできる場合は、代わりにそれらを使用します。 ID を使用してエンティティを取得すると、パフォーマンスが向上します。 フィルター メソッドを使用する withCondition
代わりに、 メソッドを使用します withIds
。 たとえば、「 withIds(['12345'])
」のように入力します。 ID を使用して取得できるエンティティの数には制限があります。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
var iterator = AdsApp.keywords()
.withCondition(`AdGroupName = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
while (iterator.hasNext()) {
var keyword = iterator.next();
}
}
アカウント内のすべてのキーワードを取得する
アカウントに対してスクリプトが返すことができるキーワードの数には制限があります。 制限は未定義であり、変更される可能性があります。 次の例は、アカウントにキーワードが多すぎるケースを処理する方法を示しています。 この例では、最初にアカウント レベルですべてのキーワードをフェッチしようとします。 "エンティティが多すぎる" エラーが原因で失敗した場合は、通常、キャンペーン レベルのエンティティが少ないため、キャンペーンごとにキーワードをフェッチするための複数の呼び出しが試行されます。
yield キーワードの使用については、「大規模なエンティティ セットを取得するときに yield キーワードを使用する」を参照してください。
function* getEntities() {
const applyConditions = _ => _
.withCondition('CampaignStatus = ENABLED')
.withCondition('AdGroupStatus = ENABLED')
.withCondition('Status = ENABLED')
.withCondition("CombinedApprovalStatus = DISAPPROVED");
try {
// Get the account's keywords.
const keywords = applyConditions(AdsApp.keywords()).get();
while (keywords.hasNext()) {
yield keywords.next();
}
} catch (e) {
if (!e.message.startsWith('There are too many entities')) {
throw e;
}
// If there are too many keywords at the account level,
// get keywords by campaigns under the account.
const campaigns = AdsApp.campaigns().get();
while (campaigns.hasNext()) {
const campaign = campaigns.next();
const keywords = applyConditions(campaign.keywords()).get();
while (keywords.hasNext()) {
yield keywords.next();
}
}
}
}
キーワードのパフォーマンス データを取得する
キーワードのパフォーマンス メトリックを取得するには、キーワードの getStats メソッドを 呼び出します。 キーワードを取得するときは、目的のメトリック データの日付範囲を指定する必要があります。 日付範囲は、LAST_MONTHや TODAY などの定義済みのリテラル、または開始日と終了日を使用して指定できます。 日付範囲を指定するには、キーワードを forDateRange
選択するときにいずれかのメソッドを使用します ( KeywordSelector を参照してください)。
アクセスできるメトリックの一覧については、 Stats オブジェクトを参照してください。
function main() {
var campaignName = 'CAMPAIGN NAME GOES HERE';
var adGroupName = 'AD GROUP NAME GOES HERE';
var keywordText = 'KEYWORD TEXT GOES HERE';
// Get the keyword. You need to specify the date range of the
// performance data you want to get.
var iterator = AdsApp.keywords()
.forDateRange('LAST_WEEK')
.withCondition(`Text = '${keywordText}'`)
.withCondition(`AdGroupName = '${adGroupName}'`)
.withCondition(`CampaignName = '${campaignName}'`)
.get();
// If the keyword is found, log some metrics.
if (iterator.hasNext()) {
var keyword = iterator.next();
var metrics = keyword.getStats(); // Gets the performance metrics.
}
}
キーワードの入札単価を更新します。
キーワードの入札単価を更新する方法を示す例については、「 Google サービスの呼び出し」を参照してください。