Google DFA API - 列表 Placement/Campaign ID - Apps 脚本
Google DFA API - List Placement/Campaign IDs - Apps Script
详情:
大家好,
我的 Google 表格文件的 App 脚本有两个函数。这些是使用 DFA API DoubleClick Campaign Manager v3.3 参考创建的。
错误:
一个用于列出广告系列 ID,另一个用于展示位置 ID。
我的问题是,9/10 它们不起作用 - 抛出 JSON 解析错误:
SyntaxError: Expected end of stream at char 2292 (Number can vary).
尝试过:
我想我已经做了我需要做的一切。我参考了 API 文档来构建它。并使用与我的其他工作功能相同的逻辑来处理和执行但同样的错误。
API 在资源 > 高级 Google 服务下的脚本编辑器中启用。并使用最新版本 - v3.3 作为 v3.2 现在已贬值。
我似乎遇到的问题是当我为 campaignInfo/placementInfo 调用变量时。尽管用变量 "search" 和 "searchString" 指定了我要搜索的内容,但我似乎得到了超过 1000 个条目,当我尝试将其解析为 JSON 到变量 "data" ,它在那里崩溃了。此外,none 个条目似乎也与我的查询有关。
对于"campaignInfo",我提供具体的活动名称。我也尝试过指定 "advertiserId" 但同样的问题。
对于 "placementInfo",我提供 "kind"、"campaignId" 和 "name" 的展示位置。我也尝试过指定 "advertiserId" 但同样的问题。
我在示例中使用预设值 sheet 来测试这两个,但到目前为止还没有。
如果有人能告诉我哪里出了问题,我将不胜感激。
脚本:
活动 ID 代码:- 注意:这在几个月前一直有效,但现在无效。我没有对其进行任何更改。
function listCampaignIDs() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var campaignArray = campaignNames.map(function(r) {
return [r]
});
Logger.log(campaignNames.length)
try {
for (i = 2; i <= campaignNames.length; i++) {
if (sheet.getRange(i, 6).isBlank()) {
var search = {
"name": sheet.getRange(i, 2).getValue().toString()
}
Logger.log(search);
var campaignInfo = DoubleClickCampaigns.Campaigns.list(profileID, search).campaigns;
var data = JSON.parse(campaignInfo);
//Logger.log(data);
var campaignID = data["id"];
var campaignEndDate = data["endDate"];
var campaignStartDate = data["startDate"];
sheet.getRange(i, 6).setValue(campaignID);
sheet.getRange(i, 5).setValue(campaignEndDate);
sheet.getRange(i, 4).setValue(campaignStartDate);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
//SpreadsheetApp.getUi().alert(e);
}
}
展示位置 ID 代码:- 注意:这从来没有用过...虽然遵循与我在工作时对广告系列版本所做的类似的步骤。
function listPlacementIDs() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignIDs = sheet.getRange(2, 1, ss.getRange("A1").getDataRegion().getLastRow()).getValues();
var campaignIdsArray = campaignIDs.map(function(r) {
return [r]
});
Logger.log(campaignIDs.length)
var placementNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var placementNamesArray = placementNames.map(function(r) {
return [r]
});
Logger.log(placementNames.length)
try {
for (i = 2; i <= campaignIDs.length; i++) {
var campaignId = sheet.getRange(i, 1).getValue().toString()
Logger.log(campaignId)
var name = sheet.getRange(i, 2).getValue().toString()
Logger.log(name)
if (sheet.getRange(i, 3).isBlank()) {
var searchString = {
"kind": "dfareporting#placement",
"campaignId": campaignId,
"name": name
}
Logger.log(searchString);
var placementInfo = DoubleClickCampaigns.Placements.list(profileID, searchString).placements;
Logger.log(placementInfo)
var data = JSON.parse(placementInfo);
Logger.log(data);
var placementId = data["id"];
sheet.getRange(i, 3).setValue(placementId);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
SpreadsheetApp.getUi().alert(e);
}
}
各位,感谢抽空。我愿意接受任何可能 help/improve 以下内容的建议。
谢谢,
拉吉夫·艾哈迈德
日志导致错误,因此已删除。
非常感谢@Jescanellas 提供了解决问题所需的新视角。
更新代码 - 活动:
function listCampaignIDs() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Campaigns');
var profileID = _fetchProfileId();
var campaignNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var campaignArray = campaignNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignNames.length; i++) {
if (sheet.getRange(i, 6).isBlank()) {
var search = {
"searchString": sheet.getRange(i, 2).getValue().toString(),
"advertiserId": sheet.getRange(i, 1).getValue().toString()
}
var campaignInfo = DoubleClickCampaigns.Campaigns.list(profileID, search).campaigns;
Logger.log(campaignInfo);
var data = JSON.parse(campaignInfo);
Logger.log(data);
var campaignID = data["id"];
var campaignEndDate = data["endDate"];
var campaignStartDate = data["startDate"];
sheet.getRange(i, 6).setValue(campaignID);
sheet.getRange(i, 5).setValue(campaignEndDate);
sheet.getRange(i, 4).setValue(campaignStartDate);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
//SpreadsheetApp.getUi().alert(e);
}
}
更新代码 - 放置:
function listPlacementIds() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignIDs = sheet.getRange(2, 1, ss.getRange("A1").getDataRegion().getLastRow()).getValues();
var campaignIdsArray = campaignIDs.map(function(r) {
return [r]
});
var placementNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var placementNamesArray = placementNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignIDs.length; i++) {
var campaignId = sheet.getRange(i, 1).getValue().toString()
var name = sheet.getRange(i, 2).getValue().toString()
if (sheet.getRange(i, 3).isBlank()) {
var search = {
"kind": "dfareporting#placement",
"campaignId": campaignId,
"searchString": name
}
var placementInfo = DoubleClickCampaigns.Placements.list(profileID, search).placements;
Logger.log(placementInfo)
var data = JSON.parse(placementInfo);
Logger.log(data);
var placementId = data["id"];
sheet.getRange(i, 3).setValue(placementId);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
SpreadsheetApp.getUi().alert(e);
}
}
非常感谢@Jescanellas 提供了解决问题所需的新视角。
更新代码 - 活动:
function listCampaignIDs() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Campaigns');
var profileID = _fetchProfileId();
var campaignNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var campaignArray = campaignNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignNames.length; i++) {
if (sheet.getRange(i, 6).isBlank()) {
var search = {
"searchString": sheet.getRange(i, 2).getValue().toString(),
"advertiserId": sheet.getRange(i, 1).getValue().toString()
}
var campaignInfo = DoubleClickCampaigns.Campaigns.list(profileID, search).campaigns;
Logger.log(campaignInfo);
var data = JSON.parse(campaignInfo);
Logger.log(data);
var campaignID = data["id"];
var campaignEndDate = data["endDate"];
var campaignStartDate = data["startDate"];
sheet.getRange(i, 6).setValue(campaignID);
sheet.getRange(i, 5).setValue(campaignEndDate);
sheet.getRange(i, 4).setValue(campaignStartDate);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
//SpreadsheetApp.getUi().alert(e);
}
}
更新代码 - 放置:
function listPlacementIds() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignIDs = sheet.getRange(2, 1, ss.getRange("A1").getDataRegion().getLastRow()).getValues();
var campaignIdsArray = campaignIDs.map(function(r) {
return [r]
});
var placementNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var placementNamesArray = placementNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignIDs.length; i++) {
var campaignId = sheet.getRange(i, 1).getValue().toString()
var name = sheet.getRange(i, 2).getValue().toString()
if (sheet.getRange(i, 3).isBlank()) {
var search = {
"kind": "dfareporting#placement",
"campaignId": campaignId,
"searchString": name
}
var placementInfo = DoubleClickCampaigns.Placements.list(profileID, search).placements;
Logger.log(placementInfo)
var data = JSON.parse(placementInfo);
Logger.log(data);
var placementId = data["id"];
sheet.getRange(i, 3).setValue(placementId);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
SpreadsheetApp.getUi().alert(e);
}
}
详情:
大家好,
我的 Google 表格文件的 App 脚本有两个函数。这些是使用 DFA API DoubleClick Campaign Manager v3.3 参考创建的。
错误:
一个用于列出广告系列 ID,另一个用于展示位置 ID。 我的问题是,9/10 它们不起作用 - 抛出 JSON 解析错误:
SyntaxError: Expected end of stream at char 2292 (Number can vary).
尝试过:
我想我已经做了我需要做的一切。我参考了 API 文档来构建它。并使用与我的其他工作功能相同的逻辑来处理和执行但同样的错误。
API 在资源 > 高级 Google 服务下的脚本编辑器中启用。并使用最新版本 - v3.3 作为 v3.2 现在已贬值。
我似乎遇到的问题是当我为 campaignInfo/placementInfo 调用变量时。尽管用变量 "search" 和 "searchString" 指定了我要搜索的内容,但我似乎得到了超过 1000 个条目,当我尝试将其解析为 JSON 到变量 "data" ,它在那里崩溃了。此外,none 个条目似乎也与我的查询有关。
对于"campaignInfo",我提供具体的活动名称。我也尝试过指定 "advertiserId" 但同样的问题。
对于 "placementInfo",我提供 "kind"、"campaignId" 和 "name" 的展示位置。我也尝试过指定 "advertiserId" 但同样的问题。
我在示例中使用预设值 sheet 来测试这两个,但到目前为止还没有。 如果有人能告诉我哪里出了问题,我将不胜感激。
脚本:
活动 ID 代码:- 注意:这在几个月前一直有效,但现在无效。我没有对其进行任何更改。
function listCampaignIDs() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var campaignArray = campaignNames.map(function(r) {
return [r]
});
Logger.log(campaignNames.length)
try {
for (i = 2; i <= campaignNames.length; i++) {
if (sheet.getRange(i, 6).isBlank()) {
var search = {
"name": sheet.getRange(i, 2).getValue().toString()
}
Logger.log(search);
var campaignInfo = DoubleClickCampaigns.Campaigns.list(profileID, search).campaigns;
var data = JSON.parse(campaignInfo);
//Logger.log(data);
var campaignID = data["id"];
var campaignEndDate = data["endDate"];
var campaignStartDate = data["startDate"];
sheet.getRange(i, 6).setValue(campaignID);
sheet.getRange(i, 5).setValue(campaignEndDate);
sheet.getRange(i, 4).setValue(campaignStartDate);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
//SpreadsheetApp.getUi().alert(e);
}
}
展示位置 ID 代码:- 注意:这从来没有用过...虽然遵循与我在工作时对广告系列版本所做的类似的步骤。
function listPlacementIDs() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignIDs = sheet.getRange(2, 1, ss.getRange("A1").getDataRegion().getLastRow()).getValues();
var campaignIdsArray = campaignIDs.map(function(r) {
return [r]
});
Logger.log(campaignIDs.length)
var placementNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var placementNamesArray = placementNames.map(function(r) {
return [r]
});
Logger.log(placementNames.length)
try {
for (i = 2; i <= campaignIDs.length; i++) {
var campaignId = sheet.getRange(i, 1).getValue().toString()
Logger.log(campaignId)
var name = sheet.getRange(i, 2).getValue().toString()
Logger.log(name)
if (sheet.getRange(i, 3).isBlank()) {
var searchString = {
"kind": "dfareporting#placement",
"campaignId": campaignId,
"name": name
}
Logger.log(searchString);
var placementInfo = DoubleClickCampaigns.Placements.list(profileID, searchString).placements;
Logger.log(placementInfo)
var data = JSON.parse(placementInfo);
Logger.log(data);
var placementId = data["id"];
sheet.getRange(i, 3).setValue(placementId);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
SpreadsheetApp.getUi().alert(e);
}
}
各位,感谢抽空。我愿意接受任何可能 help/improve 以下内容的建议。
谢谢, 拉吉夫·艾哈迈德
日志导致错误,因此已删除。
非常感谢@Jescanellas 提供了解决问题所需的新视角。
更新代码 - 活动:
function listCampaignIDs() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Campaigns');
var profileID = _fetchProfileId();
var campaignNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var campaignArray = campaignNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignNames.length; i++) {
if (sheet.getRange(i, 6).isBlank()) {
var search = {
"searchString": sheet.getRange(i, 2).getValue().toString(),
"advertiserId": sheet.getRange(i, 1).getValue().toString()
}
var campaignInfo = DoubleClickCampaigns.Campaigns.list(profileID, search).campaigns;
Logger.log(campaignInfo);
var data = JSON.parse(campaignInfo);
Logger.log(data);
var campaignID = data["id"];
var campaignEndDate = data["endDate"];
var campaignStartDate = data["startDate"];
sheet.getRange(i, 6).setValue(campaignID);
sheet.getRange(i, 5).setValue(campaignEndDate);
sheet.getRange(i, 4).setValue(campaignStartDate);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
//SpreadsheetApp.getUi().alert(e);
}
}
更新代码 - 放置:
function listPlacementIds() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignIDs = sheet.getRange(2, 1, ss.getRange("A1").getDataRegion().getLastRow()).getValues();
var campaignIdsArray = campaignIDs.map(function(r) {
return [r]
});
var placementNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var placementNamesArray = placementNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignIDs.length; i++) {
var campaignId = sheet.getRange(i, 1).getValue().toString()
var name = sheet.getRange(i, 2).getValue().toString()
if (sheet.getRange(i, 3).isBlank()) {
var search = {
"kind": "dfareporting#placement",
"campaignId": campaignId,
"searchString": name
}
var placementInfo = DoubleClickCampaigns.Placements.list(profileID, search).placements;
Logger.log(placementInfo)
var data = JSON.parse(placementInfo);
Logger.log(data);
var placementId = data["id"];
sheet.getRange(i, 3).setValue(placementId);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
SpreadsheetApp.getUi().alert(e);
}
}
非常感谢@Jescanellas 提供了解决问题所需的新视角。
更新代码 - 活动:
function listCampaignIDs() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Campaigns');
var profileID = _fetchProfileId();
var campaignNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var campaignArray = campaignNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignNames.length; i++) {
if (sheet.getRange(i, 6).isBlank()) {
var search = {
"searchString": sheet.getRange(i, 2).getValue().toString(),
"advertiserId": sheet.getRange(i, 1).getValue().toString()
}
var campaignInfo = DoubleClickCampaigns.Campaigns.list(profileID, search).campaigns;
Logger.log(campaignInfo);
var data = JSON.parse(campaignInfo);
Logger.log(data);
var campaignID = data["id"];
var campaignEndDate = data["endDate"];
var campaignStartDate = data["startDate"];
sheet.getRange(i, 6).setValue(campaignID);
sheet.getRange(i, 5).setValue(campaignEndDate);
sheet.getRange(i, 4).setValue(campaignStartDate);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
//SpreadsheetApp.getUi().alert(e);
}
}
更新代码 - 放置:
function listPlacementIds() { //and placement end dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet15');
var profileID = _fetchProfileId();
var campaignIDs = sheet.getRange(2, 1, ss.getRange("A1").getDataRegion().getLastRow()).getValues();
var campaignIdsArray = campaignIDs.map(function(r) {
return [r]
});
var placementNames = sheet.getRange(2, 2, ss.getRange("B1").getDataRegion().getLastRow()).getValues();
var placementNamesArray = placementNames.map(function(r) {
return [r]
});
try {
for (i = 2; i <= campaignIDs.length; i++) {
var campaignId = sheet.getRange(i, 1).getValue().toString()
var name = sheet.getRange(i, 2).getValue().toString()
if (sheet.getRange(i, 3).isBlank()) {
var search = {
"kind": "dfareporting#placement",
"campaignId": campaignId,
"searchString": name
}
var placementInfo = DoubleClickCampaigns.Placements.list(profileID, search).placements;
Logger.log(placementInfo)
var data = JSON.parse(placementInfo);
Logger.log(data);
var placementId = data["id"];
sheet.getRange(i, 3).setValue(placementId);
}
}
} catch (e) {
Logger.log("Error is: %s", e);
SpreadsheetApp.getUi().alert(e);
}
}