如果您想存取單一使用者帳戶,一切都從 AdsApp 物件開始。
如何?存取我帳戶中的實體?
用 AdsApp 來存取帳戶中的所有實體。 該物件包含各種實體類型的選取器方法, (例如,廣告活動、廣告群組和關鍵字) 。 選取器方法會傳回該實體類型的所有實體。 例如,若要取得帳戶中的所有廣告群組,請呼叫 adGroups() 方法。
var iterator = AdsApp.adGroups().get();
但是,如果我想要特定實體或實體子集,該怎麼辦?
選取器提供不同的方式來篩選實體清單。 您可以使用選取器的方法 withIds() 以識別碼取得特定實體,或使用 withCondition() 來指定選取實體的選取準則。 除了排除字彙清單之外,所有實體類型的選取器都提供篩選實體清單的功能。
使用點符號將多個篩選串在一起。 如果您指定多個篩選條件,則會將它們視為 AND 運算 — 選取器只會傳回符合所有條件的實體。
若要取得廣告活動中的所有廣告群組,請使用 withCondition() 指定廣告活動名稱的方法。
var campaignName = 'My Campaign';
var iterator = AdsApp.adGroups()
.withCondition(`CampaignName = '${campaignName}'`)
.get();
如需可用來篩選實體清單的條件和運算子清單,請參閱選取器 withCondition() 方法。 例如,如需廣告群組條件的清單,請參閱廣告群組選取器的 withCondition 方法。
若要依識別碼取得廣告群組,請使用 withIds() 指定要取得的廣告群組的方法。
var ids = ["123456789"];
var iterator = AdsApp.adGroups()
.withIds(ids)
.get();
或者,您可以依名稱取得廣告群組。
var campaignName = 'My Campaign';
var adGroupName = 'My AdGroup';
var iterator = AdsApp.adGroups()
.withCondition(`CampaignName = '${campaignName}'`)
.withCondition(`Name = '${adGroupName}'`)
.get();
如需選取器的詳細資訊,請參閱什麼是 選取器?
如何?使用選取器來逐一查看篩選的實體清單?
您不需要。 選取器只會定義您想要取得的實體。 若要實際取得實體,您可以使用反覆運算器。 若要取得反覆運算子,請呼叫選取器的方法 get() 。
var ids = ["123456789"];
var iterator = AdsApp.adGroups()
.withIds(ids)
.get();
使用簡單的 while 迴圈來逐一查看實體清單。
while (iterator.hasNext()) {
var adGroup = iterator.next();
// Do something with the entity
}
如需反覆運算器的詳細資訊,請參閱 什麼是反覆運算器?
如何?取得實體的效能資料?
如果有的話,大部分實體都可讓您要求效能資料。 但首先,您必須在指定選取器時,告知指令碼效能資料的日期範圍。 若要指定日期範圍,請使用預先定義的常值,例如 YESTERDAY 或 LAST_MONTH,或使用開始日期和結束日期。 如需詳細資訊,請參閱 forDateRange (字串 dateRange) 和 forDateRange (Object dateFrom, Object dateTo) 。
var campaignName = 'My Campaign';
var adGroupName = 'My AdGroup';
var iterator = AdsApp.adGroups()
.forDateRange('LAST_30_DAYS')
.withCondition(`CampaignName = '${campaignName}'`)
.withCondition(`Name = '${adGroupName}'`)
.get();
while (iterator.hasNext()) {
var adGroup = iterator.next();
var stats = adGroup.getStats();
}
如果您在選取器 withCondition() 方法中指定成效資料欄位,也需要指定日期範圍。 例如,如果您只想要廣告群組點選率大於 .22%,則需要指定日期範圍。
var startDate = {year: 2018, month: 6, day: 3};
var endDate = {year: 2018, month: 6, day: 13};
var iterator = AdsApp.adGroups()
.forDateRange(startDate, endDate)
.withCondition("Ctr > 0.22")
.get();
如何?新增實體?
若要新增實體,您可以使用建置器物件。 若要取得建置器物件,請在您要新增子系的父物件上呼叫 new* 方法。 例如,若要將廣告群組新增至廣告活動,請呼叫廣告活動的方法 newAdGroupBuilder() 。
產生器物件包含用來設定您可以指定之所有物件屬性的方法。 它還包括 build() 用來建立實體的方法。 下列說明如何建立廣告群組。 (如需如何取得行銷活動物件的相關資訊,請參閱 依名稱取得行銷活動。)
var adGroupName = "My ad group";
var endDate = {year: 2018, month: 6, day: 13};
var customParameters = {key1: 'value1', key2: 'value2', key3: 'value3'};
var adGroupOperation = campaign.newAdGroupBuilder()
.withName(adGroupName)
.withStatus('ENABLED')
.withLanguage('English')
.withBiddingStrategy('MANUAL_CPC')
.withCpc(1.2)
.withCustomParameters(customParameters)
.withEndDate(endDate)
.build();
build此方法會傳回作業物件,您可以用來檢查指令碼是否成功建立實體。 以下顯示典型的呼叫模式。 只有在您想要存取新實體的屬性時,才呼叫 getResult 方法。
if (adGroupOperation.isSuccessful()) {
var adGroup = adGroupOperation.getResult();
}
else {
for (var error of adGroupOperation.getErrors()) {
Logger.log(`${error}\n`);
}
}
如需呼叫作業方法時的建置器和效能考量的詳細資訊,請參閱 什麼是建置器?
如何?更新實體?
使用建置器物件新增實體之後,您可以使用實體的方法來更新其屬性。 下列範例會更新廣告群組的每次點選成本出價金額。
var ids = ["123456789"];
var adGroups = AdsApp.adGroups()
.withIds(ids)
.get();
if (adGroups.hasNext()) {
var adGroup = adGroups.next();
adGroup.bidding().setCpc(2.5);
}
但是我要如何知道更新已正常運作呢?
如果您嘗試更新具有無效值的屬性,指令碼會將錯誤寫入變更記錄檔,但不會擲回例外狀況,因此指令碼會繼續執行。 不要在更新屬性後取得屬性,以檢查屬性是否包含新值;這樣做會對效能造成負面影響。
function main() {
var id = "123456789";
var bidAmount = -2.5;
var keyword = getKeyword(id);
if (keyword != null) {
keyword.bidding().setCpc(bidAmount); // Bid is not set because bid amount is not valid
}
}
function getKeyword(id) {
var keywords = AdsApp.keywords()
.withIds([id])
.get();
if (keywords.hasNext()) {
return keywords.next();
}
else {
return null;
}
}
寫入記錄檔
指令碼會提供記錄檔,供您寫入追蹤及偵錯資訊。 如需詳細資訊,請參閱 變更記錄和文字記錄。