UNPKG

nodejs-google-adwords

Version:
361 lines (360 loc) 14.6 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("../../core"); var adwords_1 = require("../../../types/adwords"); var Ad = __importStar(require("../../../types/adwords/Ad")); var lodash_1 = __importDefault(require("lodash")); var AdGroupAdService = /** @class */ (function (_super) { __extends(AdGroupAdService, _super); function AdGroupAdService(options) { var _this = _super.call(this) || this; _this.soapService = options.soapService; return _this; } // TODO: better type guard AdGroupAdService.isExpandedTextAd = function (ad) { return lodash_1.default.every(['headlinePart1', 'description'], function (prop) { return prop in ad; }); }; AdGroupAdService.isResponsiveDisplayAd = function (ad) { return lodash_1.default.every(['dynamicDisplayAdSettings', 'shortHeadline'], function (prop) { return prop in ad; }); }; AdGroupAdService.setType = function (operand) { if (AdGroupAdService.isExpandedTextAd(operand.ad)) { operand.ad.attributes = { 'xsi:type': 'ExpandedTextAd' }; } else if (AdGroupAdService.isResponsiveDisplayAd(operand.ad)) { operand.ad.attributes = { 'xsi:type': 'ResponsiveDisplayAd' }; } return operand; }; AdGroupAdService.prototype.getAll = function () { return __awaiter(this, void 0, void 0, function () { var serviceSelector; return __generator(this, function (_a) { serviceSelector = { fields: AdGroupAdService.selectorFields, }; return [2 /*return*/, this.get(serviceSelector)]; }); }); }; AdGroupAdService.prototype.getAllMultiAssetResponsiveDisplayAd = function () { return __awaiter(this, void 0, void 0, function () { var serviceSelector; return __generator(this, function (_a) { serviceSelector = { fields: AdGroupAdService.selectorFields, predicates: [ { field: 'AdType', operator: adwords_1.Predicate.Operator.IN, values: [Ad.Type.MULTI_ASSET_RESPONSIVE_DISPLAY_AD], }, ], }; return [2 /*return*/, this.get(serviceSelector)]; }); }); }; AdGroupAdService.prototype.getAllExpandedTextAd = function (paging) { return __awaiter(this, void 0, void 0, function () { var serviceSelector; return __generator(this, function (_a) { serviceSelector = { fields: AdGroupAdService.selectorFields, predicates: [ { field: 'AdType', operator: adwords_1.Predicate.Operator.IN, values: [Ad.Type.EXPANDED_TEXT_AD], }, ], }; if (paging) { serviceSelector.paging = paging; } return [2 /*return*/, this.get(serviceSelector)]; }); }); }; AdGroupAdService.prototype.getByAdGroupIds = function (adGroupIds) { return __awaiter(this, void 0, void 0, function () { var serviceSelector; return __generator(this, function (_a) { serviceSelector = { fields: AdGroupAdService.selectorFields, predicates: [ { field: 'AdGroupId', operator: adwords_1.Predicate.Operator.IN, values: adGroupIds, }, ], }; return [2 /*return*/, this.get(serviceSelector)]; }); }); }; /** * add ad group ad. * * 当调用 mutate() 时,最好每个请求发送多个操作;避免发送多个请求,而每个请求仅包含一个操作。每个请求发送多个操作可减少到服务器的往返次数,并提高应用性能。 * * @author dulin * @param {IAdGroupAd[]} adGroupAds * @returns * @memberof AdGroupAdService */ AdGroupAdService.prototype.add = function (adGroupAds) { var operations = adGroupAds.map(function (adGroupAd) { var operation = { operator: adwords_1.Operator.ADD, operand: AdGroupAdService.setType(adGroupAd), }; return operation; }); return this.mutate(operations); }; AdGroupAdService.prototype.update = function (adGroupAds) { var operations = adGroupAds.map(function (adGroupAd) { var operation = { operator: adwords_1.Operator.SET, operand: adGroupAd, }; return operation; }); return this.mutate(operations); }; AdGroupAdService.prototype.get = function (serviceSelector) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, this.soapService.get(serviceSelector).then(function (rval) { return rval; })]; }); }); }; AdGroupAdService.prototype.mutate = function (operations) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, this.soapService .mutateAsync(operations, /** operationType = */ 'AdGroupAdOperation') .then(function (rval) { return rval; })]; }); }); }; /** * https://developers.google.com/adwords/api/docs/appendix/selectorfields#v201809-AdGroupAdService * * @private * @static * @memberof AdGroupAdService */ AdGroupAdService.selectorFields = [ 'AccentColor', 'AdGroupId', 'AdStrengthInfo', 'AdType', 'AdvertisingId', 'AllowFlexibleColor', 'Automated', 'BaseAdGroupId', 'BaseCampaignId', 'BusinessName', 'CallOnlyAdBusinessName', 'CallOnlyAdCallTracked', 'CallOnlyAdConversionTypeId', 'CallOnlyAdCountryCode', 'CallOnlyAdDescription1', 'CallOnlyAdDescription2', 'CallOnlyAdDisableCallConversion', 'CallOnlyAdPhoneNumber', 'CallOnlyAdPhoneNumberVerificationUrl', 'CallToActionText', 'CreationTime', 'CreativeFinalAppUrls', 'CreativeFinalMobileUrls', 'CreativeFinalUrlSuffix', 'CreativeFinalUrls', 'CreativeTrackingUrlTemplate', 'CreativeUrlCustomParameters', 'Description', 'Description1', 'Description2', 'DevicePreference', 'Dimensions', 'DisplayUploadAdGmailTeaserBusinessName', 'DisplayUploadAdGmailTeaserDescription', 'DisplayUploadAdGmailTeaserHeadline', 'DisplayUploadAdGmailTeaserLogoImage', 'DisplayUrl', 'ExpandedDynamicSearchCreativeDescription2', 'ExpandedTextAdDescription2', 'ExpandedTextAdHeadlinePart3', 'ExpandingDirections', 'FileSize', 'FormatSetting', 'GmailHeaderImage', 'GmailMarketingImage', 'GmailTeaserBusinessName', 'GmailTeaserDescription', 'GmailTeaserHeadline', 'GmailTeaserLogoImage', 'Headline', 'HeadlinePart1', 'HeadlinePart2', 'Height', 'Id', 'ImageCreativeName', 'IndustryStandardCommercialIdentifier', 'IsCookieTargeted', 'IsTagged', 'IsUserInterestTargeted', 'Labels', 'LandscapeLogoImage', 'LogoImage', 'LongHeadline', 'MainColor', 'MarketingImage', 'MarketingImageCallToActionText', 'MarketingImageCallToActionTextColor', 'MarketingImageDescription', 'MarketingImageHeadline', 'MediaId', 'MimeType', 'MultiAssetResponsiveDisplayAdAccentColor', 'MultiAssetResponsiveDisplayAdAllowFlexibleColor', 'MultiAssetResponsiveDisplayAdBusinessName', 'MultiAssetResponsiveDisplayAdCallToActionText', 'MultiAssetResponsiveDisplayAdDescriptions', 'MultiAssetResponsiveDisplayAdDynamicSettingsPricePrefix', 'MultiAssetResponsiveDisplayAdDynamicSettingsPromoText', 'MultiAssetResponsiveDisplayAdFormatSetting', 'MultiAssetResponsiveDisplayAdHeadlines', 'MultiAssetResponsiveDisplayAdLandscapeLogoImages', 'MultiAssetResponsiveDisplayAdLogoImages', 'MultiAssetResponsiveDisplayAdLongHeadline', 'MultiAssetResponsiveDisplayAdMainColor', 'MultiAssetResponsiveDisplayAdMarketingImages', 'MultiAssetResponsiveDisplayAdSquareMarketingImages', 'MultiAssetResponsiveDisplayAdYouTubeVideos', 'Path1', 'Path2', 'PolicySummary', 'PricePrefix', 'ProductImages', 'ProductVideoList', 'PromoText', 'ReadyToPlayOnTheWeb', 'ReferenceId', 'ResponsiveSearchAdDescriptions', 'ResponsiveSearchAdHeadlines', 'ResponsiveSearchAdPath1', 'ResponsiveSearchAdPath2', 'RichMediaAdCertifiedVendorFormatId', 'RichMediaAdDuration', 'RichMediaAdImpressionBeaconUrl', 'RichMediaAdName', 'RichMediaAdSnippet', 'RichMediaAdSourceUrl', 'RichMediaAdType', 'ShortHeadline', 'SourceUrl', 'SquareMarketingImage', 'Status', 'SystemManagedEntitySource', 'TemplateAdDuration', 'TemplateAdName', 'TemplateAdUnionId', 'TemplateElementFieldName', 'TemplateElementFieldText', 'TemplateElementFieldType', 'TemplateId', 'TemplateOriginAdId', 'UniqueName', 'UniversalAppAdDescriptions', 'UniversalAppAdHeadlines', 'UniversalAppAdHtml5MediaBundles', 'UniversalAppAdImages', 'UniversalAppAdMandatoryAdText', 'UniversalAppAdYouTubeVideos', 'Url', 'UrlData', 'Urls', 'VideoTypes', 'Width', 'YouTubeVideoIdString', ]; return AdGroupAdService; }(core_1.AdwordsOperartionService)); exports.AdGroupAdService = AdGroupAdService; __export(require("./Label")); __export(require("./enum/Ad")); __export(require("./enum/AdGroupAd")); __export(require("./enum/DisplayAdFormatSetting")); __export(require("./enum/Media")); __export(require("./enum/SystemManagedEntitySource"));