GoogleJsonResponseException: API call to dfareporting.ads.insert failed with error: Invalid value at 'profile_id' (TYPE_INT64)

GoogleJsonResponseException: API call to dfareporting.ads.insert failed with error: Invalid value at 'profile_id' (TYPE_INT64)

我尝试使用以下 ad 对象调用此 API。

  var ad = DoubleClickCampaigns.Ads.insert(6485800,
    {
      
      "campaignId": parseInt(singlePlacementArray[0]),
      "advertiserId": parseInt(inputSheet.getRange("J9").getValue()),
      
      //"accountId": inputSheet.getRange("H9").getValue(),
      "name": singlePlacementArray[1],
       "active": true,
       "archived": false,
      "type": "AD_SERVING_TRACKING",
      "startDate": Utilities.formatDate(singlePlacementArray[5], ss.getSpreadsheetTimeZone(), "yyyy-MM-dd"),
      "endDate": Utilities.formatDate(singlePlacementArray[6], ss.getSpreadsheetTimeZone(), "yyyy-MM-dd"),
      "placementAssignments": [
        {
          "placementId": parseInt(singlePlacementArray[9]),
          "active": true,
          //"sslRequired": false,
        }
      ]
    });

我收到这个错误,甚至认为 profile_id 是一个整数。

GoogleJsonResponseException: API call to dfareporting.ads.insert failed with error: Invalid value at 'profile_id' (TYPE_INT64), "endDate,2023-06-30,placementAssignments,[Ljava.lang.Object;@7ad1fc95,campaignId,2.2529571E7,type,AD_SERVING_TRACKING,active,true,startDate,2021-05-29,advertiserId,6334010.0,name,video campaign test parallel tracking_cn+Video,archived,false"

看来DoubleClickCampaigns.Ads.insert方法的参数是DoubleClickCampaigns.Ads.insert(object, profileId)。我认为你的问题的原因可能是由于这个。而且,profileId 似乎是 string (int64 format)。那么下面的修改呢?

修改后的脚本:

var ad = DoubleClickCampaigns.Ads.insert({
  "campaignId": parseInt(singlePlacementArray[0]),
  "advertiserId": parseInt(inputSheet.getRange("J9").getValue()),
  //"accountId": inputSheet.getRange("H9").getValue(),
  "name": singlePlacementArray[1],
  "active": true,
  "archived": false,
  "type": "AD_SERVING_TRACKING",
  "startDate": Utilities.formatDate(singlePlacementArray[5], ss.getSpreadsheetTimeZone(), "yyyy-MM-dd"),
  "endDate": Utilities.formatDate(singlePlacementArray[6], ss.getSpreadsheetTimeZone(), "yyyy-MM-dd"),
  "placementAssignments": [
    {
      "placementId": parseInt(singlePlacementArray[9]),
      "active": true,
      //"sslRequired": false,
    }
  ]
}, "6485800");

注:

  • 在这个修改后的脚本中,它假定您在第一个参数的对象中的值和第二个参数的 profileId 的值是有效值。请注意这一点。
  • the official document开始,我不确定startDateendDate是否可以在这个请求中使用。是 startTimeendTime 吗?如果此处出现错误,请重新检查。

参考文献: