Google DFA API - список мест размещения / идентификаторы кампаний - скрипт скриптов - PullRequest
1 голос
/ 28 октября 2019

ДЕТАЛИ:

Привет всем,

У меня есть две функции в скриптах приложений для моего файла 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);
  }
}

1 Ответ

1 голос
/ 28 октября 2019

Большое спасибо @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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...