【发布时间】:2015-01-29 21:57:27
【问题描述】:
大家下午好
我需要开发一个 adwords 脚本。这将是我开始着手的第一个自定义脚本。之前的所有脚本都是来自 google 的示例脚本。
我有一个 MCC 帐户,其中包含多个客户帐户。我想要一个为 MCC 中的每个帐户运行的脚本,并查询该月每一天的数据。然后我希望将其添加到谷歌电子表格中。
我已经写了一个我想要发生的例子,但需要指出如何到达那里
- 获取客户账户列表
- 选择帐户
- 列表项
- 选择一个月的第一天
- 列表项
- 生成报告创建一个谷歌文档,为每个创建一个工作表 一天
- 选择第二天。如果是一个月的最后一天,则停止循环
- 选择下一个帐户
我已经手动执行上述操作已有一段时间了,它开始变得乏味。我还发现分析中的转化在几天内都没有过滤掉,所以它回复我处理一些系统来提取数据。
如果我到达脚本正在运行的地步,那么我将安排它在当月的最后一天或下个月的第一天运行
任何帮助将不胜感激
*****更新*****
我已经开发了以下代码,但我的输出有些问题。
我期待一个谷歌电子表格 - 每个月的每一天都有一张纸 - 我在我的 mcc 中拥有的所有子帐户的所有广告系列的列表 - 与每月相关日期的每个活动相关的统计数据
我得到的是
- 每月每一天的工作表
- 只有第一张表填充了数据
-
电子表格中的其余工作表仅包含列标题
var row = 2; var reportMonth; var reportYear; var reportDays; var reportMonthName; function main() { var mccAccount = AdWordsApp.currentAccount(); var childAccounts = MccApp.accounts().get(); reportMonth = getPreviousMonth(); Logger.log("Report Month" + reportMonth); reportYear = new Date().getFullYear() if (reportMonth = 12) { reportYear = reportYear - 1; } Logger.log("Report Year" + reportYear); reportDays = daysInMonth(reportMonth,reportYear); Logger.log("Report Days" + reportDays); reportMonthName = monthNumberToName(reportMonth); Logger.log("Month Name" + reportMonthName); // Create a new spreadsheet (will have private access for you only). var reportName = "Weekly QS Report – " + reportMonthName; var spreadsheet = SpreadsheetApp.create(reportName); for (i=1; i < (reportDays+1);i++) { var reportDay; if (i < 10) { reportDay = "" + "0" + i; } else { reportDay = i; } var reportDate = "" + reportYear + reportMonth + reportDay; Logger.log("Create Sheet" + reportDate); var sheet = spreadsheet.insertSheet() sheet.setName(i) // Write header row. sheet.getRange("A1").setValue("Account"); sheet.getRange("B1").setValue("Campaign"); sheet.getRange("C1").setValue("Impressions"); sheet.getRange("D1").setValue("Clicks"); sheet.getRange("E1").setValue("Cost"); while (childAccounts.hasNext()) { var childAccount = childAccounts.next(); MccApp.select(childAccount); // Select campaigns under the client account var campaignIterator = AdWordsApp.campaigns().get(); // Write body of report. while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); Logger.log("Report Date" + reportDate); var stats = campaign.getStatsFor(reportDate,reportDate); sheet.getRange("A" + row).setValue(childAccount.getName()); sheet.getRange("B" + row).setValue(campaign.getName()); sheet.getRange("C" + row).setValue(stats.getImpressions()); sheet.getRange("D" + row).setValue(stats.getClicks()); sheet.getRange("E" + row).setValue(stats.getCost()); row ++; } } } MccApp.select(mccAccount); } function getDateInfo() { var premonth = getPreviousMonth(); var dayIn = daysInMonth(premonth,year); } function daysInMonth(month,year) { return new Date(year, month, 0).getDate(); } function getPreviousMonth() { var d = new Date(); var n = d.getMonth(); n = n - 1; if (n = -1) { n = 12; } return n; } function monthNumberToName (monthnum) { var months = []; months[1] = 'january'; months[2] = 'february'; months[3] = 'march'; months[4] = 'april'; months[5] = 'may'; months[6] = 'june'; months[7] = 'july'; months[8] = 'august'; months[9] = 'september'; months[10] = 'october'; months[11] = 'november'; months[12] = 'december'; var myMonthName = months[monthnum]; return myMonthName; };
任何帮助将不胜感激,在此先感谢各位
【问题讨论】:
标签: google-ads-api