I'm using the script below to pull just campaign data with the aim of including keyword match type. This seems to be a new addition in v17 but when I include v17 in the query, I still don't get any output for keyword match type. All other fields are outputting fine. Any help would be greatly appreciated. Thank you.
function main() {
let ss = SpreadsheetApp.openByUrl("sheet_url");
let dealer_sheet = ss.getSheetByName('accounts');
let sheet = ss.getSheetByName('raw_adwords');
dataPull(sheet, dealer_sheet);
}
function dataPull(sheet, dealerSheet) {
sheet.getRange("A:J").clearContent();
let headerRow = ["Customer ID", "Account Name", "Campaign Name", "Bidding Strategy", "Budget Name", "Match Type", "Impressions", "Clicks", "Conversions", "Cost"];
sheet.getRange("A1:J1").setValues([headerRow]).setFontWeight("bold");
let accountIDs = dealerSheet.getRange(1, 1, dealerSheet.getLastRow()).getValues();
let data = [];
for (var i = 1; i < accountIDs.length; i++) {
if (accountIDs[i][0] == "") {
break;
}
let customerId = accountIDs[i][0];
let customerName = accountIDs[i][1];
let accounts = AdsManagerApp.accounts().withIds([customerId]).get();
while (accounts.hasNext()) {
AdsManagerApp.select(accounts.next());
let custId = AdsApp.currentAccount().getCustomerId();
let custName = AdsApp.currentAccount().getName();
Logger.log(custName + ' complete');
try {
let report = AdsApp.search(
`SELECT
campaign.name,
campaign.bidding_strategy_type,
campaign_budget.name,
campaign.keyword_match_type,
metrics.impressions,
metrics.clicks,
metrics.conversions,
metrics.cost_micros
FROM campaign
WHERE
campaign.status = 'ENABLED'
AND segments.date DURING THIS_MONTH`,
{apiVersion: 'v17'}
);
while (report.hasNext()) {
let query = report.next();
let campaignName =
query.campaign.name;
let biddingStrategy = query.campaign.biddingStrategyType;
let budgetName =
query.campaignBudget.name;
let matchType = query.campaign.keywordMatchType;
let impressions = query.metrics.impressions;
let clicks = query.metrics.clicks;
let conversions = query.metrics.conversions;
let cost = query.metrics.costMicros;
data.push([custId, custName, campaignName, biddingStrategy, budgetName, matchType, impressions, clicks, conversions, cost / 1e6]);
}
} catch (error) {
Logger.log("Error fetching report: " + error);
}
}
}
if (data.length > 0) {
sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
}
}