我最近制作了一个脚本,用于从Adwords API报告KEYWORDS_PERFORMANCE_REPORT
获取信息,该报告将信息输出到Google工作表,并且工作正常。
我决定为扩展程序制作另一份报告,我基本上做的是复制并通过旧代码更改google工作表的URL以及应该使用PLACEHOLDER_REPORT
而不是关键字one的报告,以及一些指标。
脚本运行时没有说任何错误,但它不会将值输出到它应该的位置,或者根本不输出。
function processAccount()
{
var report = AdWordsApp.report(
"SELECT AccountDescriptiveName, CampaignName, ExtensionPlaceholderCreativeId, ExtensionPlaceholderType " +
"FROM PLACEHOLDER_REPORT " +
"WHERE CampaignStatus = ENABLED " +
"DURING LAST_7_DAYS",
{apiVersion: 'v201705'});
var rows = report.rows();
if (rows.hasNext())
{
writeReport(rows);
}
}
function writeReport(rows)
{
var spreadsheet = validateAndGetSpreadsheet(URL);
// Clear all rows in the Details tab of the spreadsheet below the header row.
var clearRange = spreadsheet.getRangeByName('Headers')
.offset(1, 0, spreadsheet.getSheetByName('Details')
.getDataRange().getLastRow())
.clearContent();
// Build each row of output values in the order of the Report tab columns.
var outputValues = [];
while (rows.hasNext())
{
var row = rows.next();
outputValues.push([
row["AccountDescriptiveName"],
row["CampaignName"],
row["ExtensionPlaceholderCreativeId"],
row["ExtensionPlaceholderType"],
]);
}
// Find the first open row on the Report tab below the headers and create a
// range large enough to hold all of the failures, one per row.
var lastRow = spreadsheet.getSheetByName('Details')
.getDataRange().getLastRow();
var headers = spreadsheet.getRangeByName('Headers');
var outputRange = headers
.offset(lastRow - headers.getRow() + 1, 0, outputValues.length);
Logger.log("outputValue length is "+outputValues.length);
outputRange.setValues(outputValues);
Logger.log(outputValues[0]);
spreadsheet.getRangeByName('Date').setValue(new Date());
}
我知道它找到了工作表,因为它清除了标题下面的行,就像它应该的那样,并在运行时输入日期和时间。
记录器显示outputValue的长度为293,所以它肯定会得到东西并记录outputValue[0]
的东西,所以我不知道为什么它不会写入工作表。
我打电话给adwords帮助热线,但他们说他们没有接受过api的训练,所以他们不知道怎么了最新的,而且我用Google搜索没有成功
答案 0 :(得分:0)
每次运行时你只需要新值,所以我建议使用
spreadsheet.getRange(1, 1, data.length, 4).setValues(outputValues);
用这一行替换你的最后一行,最后一个参数是你要写的列数,所以在你的情况下是4,也改变你的代码的逻辑,这样它最终会写入值,而不是每次迭代! / p>