ДЕТАЛИ:
Привет всем,
У меня есть две функции в скриптах приложений для моего файла Google Sheets. Они были созданы с использованием Справочника по API DFA для DoubleClick Campaign Manager v3.3.
ОШИБКА:
Один предназначен для списка идентификаторов кампаний и других идентификаторов мест размещения. Моя проблема в том, что 9/10 они не работают - выдает ошибку синтаксического анализа JSON:
SyntaxError: Ожидаемый конец потока на символе 2292 (число может варьироваться).
TRIED:
Я думаю, что сделал все, что мне нужно. Я ссылался на документацию API для его создания. И использовал ту же логику, что и другие мои рабочие функции, для обработки и выполнения, но с той же ошибкой.
API включен в Редакторе сценариев в разделе Ресурсы> Расширенные службы Google. И использование последней версии - v3.3, поскольку v3.2 теперь устарела.
Проблема, которую я, похоже, имею, заключается в том, когда я вызываю переменную для campaignInfo /placeInfo. Несмотря на указание того, что я ищу, с помощью переменных «search» и «searchString», я, кажется, получаю более 1000 записей, и когда я пытаюсь проанализировать это в JSON с переменной «data», он там падает. Кроме того, ни одна из записей не связана с моим запросом.
Для "campaignInfo" я предоставляю конкретное название кампании. Я также попытался указать "advertiserId", но та же проблема.
Для "placeInfo" я предоставляю "kind", "campaignId" и "name" места размещения. Я также попытался указать "advertiserId", но та же проблема.
Я использую предустановленные значения в листе с примерами для проверки двух и ничего до сих пор. Был бы признателен, если кто-то может сказать мне, где я ошибся.
СЦЕНАРИИ:
Идентификаторы кампании Код: - Примечание. Это работало несколько месяцев назад, а теперь - нет. Я не вносил в него никаких изменений.
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);
}
}
Идентификаторы мест размещения Код: - Примечание: это никогда не работало ... Хотя следует тем же шагам, которые я делал с версией кампании, когда она работала.
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);
}
}
Спасибо за ваше время, люди. Я открыт для любых предложений, которые могут помочь / улучшить ниже.
Спасибо, Раджив Ахмед
Журналы вызывали ошибки, поэтому удалили.
Большое спасибо @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);
}
}