diff --git a/types/google-adwords-scripts/google-adwords-scripts-tests.ts b/types/google-adwords-scripts/google-adwords-scripts-tests.ts new file mode 100644 index 0000000000..1d0a236fb8 --- /dev/null +++ b/types/google-adwords-scripts/google-adwords-scripts-tests.ts @@ -0,0 +1,15 @@ +// from https://developers.google.com/adwords/scripts/docs/reference/adwordsapp/adwordsapp_campaignselector + +function main() { + const campaignSelector = AdWordsApp + .campaigns() + .withCondition("Impressions > 100") + .forDateRange("LAST_MONTH") + .orderBy("Clicks DESC"); + + const campaignIterator = campaignSelector.get(); + while (campaignIterator.hasNext()) { + const campaign = campaignIterator.next(); + Logger.log(campaign.getName()); + } +} diff --git a/types/google-adwords-scripts/index.d.ts b/types/google-adwords-scripts/index.d.ts new file mode 100644 index 0000000000..3e64730056 --- /dev/null +++ b/types/google-adwords-scripts/index.d.ts @@ -0,0 +1,1564 @@ +// Type definitions for Google AdWords Scripts 1.0 +// Project: https://github.com/jafaircl/gaws +// Definitions by: Jonathan Faircloth +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +// Generics +interface AdWordsEntity { + getEntityType?(): string; +} + +interface AdWordsIterator { + hasNext(): boolean; + next(): E; + totalNumEntities(): number; +} + +interface AdWordsSelector { + get(): AdWordsIterator; + withCondition(condition: string): AdWordsSelector; + withIds(ids: number[][] | number[]): AdWordsSelector; + forDateRange(dateRange: string): AdWordsSelector; + forDateRange(dateFrom: AdWordsDate | string, dateTo: AdWordsDate | string): AdWordsSelector; + orderBy(orderBy: string): AdWordsSelector; + withLimit(limit: number): AdWordsSelector; +} + +interface AdWordsBuilder { + build(): AdWordsOperation; +} + +interface AdWordsOperation { + getErrors(): string[]; + getResult(): E; + isSuccessful(): boolean; +} + +interface AdWordsStats { + getAverageCpc(): number; + getAverageCpm(): number; + getAverageCpv(): number; + getAveragePageviews(): number; + getAveragePosition(): number; + getAverageTimeOnSite(): number; + getBounceRage(): number; + getClicks(): number; + getConversionRate(): number; + getConversions(): number; + getCost(): number; + getCtr(): number; + getImpressions(): number; + getViewRate(): number; + getViews(): number; +} + +interface AdWordsUrls { + getCustomParameters(): {}; + getTrackingTemplate(): string; +} + +interface AdWordsBidding { + getStrategy(): BiddingStrategy; + getStrategySource(): BiddingStrategySource; + getStrategyType(): string; +} + +interface AdWordsTargeting { + audiences(): AdWordsSelector; + exculdedAudiences(): AdWordsSelector; +} + +// Ad Customizers +interface AdCustomizerItem extends AdWordsEntity, + hasMobilePreferred, + hasStartAndEndDate, + hasSchedules { + clearTargetAdGroup(): void; + clearTargetCampaign(): void; + clearTargetKeyword(): void; + getAttributeValue(name: string): number | string; + getAttributeValues(): {}; + getId(): number; + getTargetAdGroupName(): string; + getTargetCampaignName(): string; + getTargetKeywordText(): string; + remove(): void; + setAttributeValue(name: string, value: string | number): void; + setAttributeValues(attributeValues: {}): void; + setTargetAdGroup(campaignName: string, adGroupName: string): void; + setTargetCampaign(campaignName: string): void; + setTargetKeyword(keyword?: string): void; +} + +interface AdCustomizerItemBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasSchedulesBuilder>, + hasStartAndEndDateBuilder> { + withAttributeValue(name: string, value: {}): AdCustomizerItemBuilder; + withAttributeValues(attributeValues: {}): AdCustomizerItemBuilder; + withTargetAdGroup(campaignName: string, adGroup: string): AdCustomizerItemBuilder; + withTargetCampaign(campaignName: string): AdCustomizerItemBuilder; + withTargetKeyword(keyword: string): AdCustomizerItemBuilder; +} + +interface AdCustomizerSource extends AdWordsEntity { + adCustomizerItemBuilder(): AdCustomizerItemBuilder; + getAttributes(): {}; + getName(): string; + items(): AdWordsSelector; +} + +interface AdCustomizerSourceBuilder extends AdWordsBuilder { + addAttribute(name: string, type: string): AdCustomizerSourceBuilder; + addAttributes(attributes: {}): AdCustomizerSourceBuilder; + withName(name: string): AdCustomizerSourceBuilder; +} + +// Ad extensions +interface AccountExtensions { + callouts(): AdWordsSelector; + message(): AdWordsSelector; + mobileApps(): AdWordsSelector; + reviews(): AdWordsSelector; + sitelinks(): AdWordsSelector; + snippets(): AdWordsSelector; +} + +interface AdGroupExtensions extends AccountExtensions { + phoneNumbers(): AdWordsSelector; +} + +interface CampaignExtensions extends AccountExtensions { + phoneNumbers(): AdWordsSelector; +} + +interface AdWordsAdExtensions extends AdGroupExtensions { + newCalloutBuilder(): CalloutBuilder; + newMessageBuilder(): MessageBuilder; + newMobileAppBuilder(): MobileAppBuilder; + newPhoneNumberBuilder(): PhoneNumberBuilder; + newReviewBuilder(): ReviewBuilder; + newSitelinkBuilder(): SitelinkBuilder; + newSnippetBuilder(): SnippetBuilder; +} + +interface Callout extends AdWordsEntity, + hasMobilePreferred, + hasStartAndEndDate, + hasSchedules, + hasStats, + isAdGroupChild { + getId(): number; + getText(): string; + setText(text: string): void; +} + +interface CalloutBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasSchedulesBuilder>, + hasStartAndEndDateBuilder> { + withText(text: string): CalloutBuilder; +} + +interface Message extends AdWordsEntity, + hasMobilePreferred, + hasStartAndEndDate, + hasSchedules, + hasStats, + isAdGroupChild { + getBusinessName(): string; + getCountryCode(): string; + getExtensionText(): string; + getId(): number; + getMessageText(): string; + getPhoneNumber(): string; + setBusinessName(businessName: string): void; + setCountryCode(countryCode: string): void; + setExtensionText(extensionText: string): void; + setMessageText(messageText: string): void; + setPhoneNumber(phoneNumber: string): void; +} + +interface MessageBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasStartAndEndDateBuilder>, + hasSchedulesBuilder> { + withBusinessName(businessName: string): MessageBuilder; + withCountryCode(countryCode: string): MessageBuilder; + withExtensionText(extensionText: string): MessageBuilder; + withMessageText(messageText: string): MessageBuilder; + withPhoneNumber(phoneNumber: string): MessageBuilder; +} + +interface MobileApp extends AdWordsEntity, + hasMobilePreferred, + hasStartAndEndDate, + hasSchedules, + hasStats, + isAdGroupChild { + clearLinkUrl(): void; + getAppId(): string; + getId(): number; + getLinkText(): string; + getStore(): AppStore; + setAppId(appId: string): void; + setLinkText(linkText: string): void; + setStore(): AppStore; + urls(): MobileAppUrls; +} + +interface MobileAppUrls extends AdWordsUrls, hasGetFinalUrl, hasSetFinalUrl, hasSetTrackingTemplate { + clearMobileFinalUrl(): void; + clearTrackingTemplate(): void; +} + +interface MobileAppBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasStartAndEndDateBuilder>, + hasSchedulesBuilder>, + hasTrackingTemplateBuilder>, + hasFinalUrlBuilder> { + withAppId(appId: string): MobileAppBuilder; + withLinkText(linkText: string): MobileAppBuilder; + withStore(store: AppStore): MobileAppBuilder; +} + +interface PhoneNumber extends AdWordsEntity, + hasMobilePreferred, + hasSchedules, + hasStartAndEndDate, + hasStats, + isAdGroupChild { + getCountry(): string; + getId(): number; + getPhoneNumber(): string; + setCountry(country: string): void; + setPhoneNumber(phoneNumber: string): void; +} + +interface PhoneNumberBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasStartAndEndDateBuilder>, + hasSchedulesBuilder> { + withCountry(country: string): PhoneNumberBuilder; + withPhoneNumber(phoneNumber: string): PhoneNumberBuilder; +} + +interface Review extends AdWordsEntity, + hasMobilePreferred, + hasSchedules, + hasStartAndEndDate, + hasStats, + isAdGroupChild { + getId(): number; + getSourceName(): string; + getSourceUrl(): string; + getText(): string; + isExactlyQuoted(): boolean; + setExactlyQuoted(isExactlyQuoted: boolean): void; + setSourceName(sourceName: string): void; + setSourceUrl(sourceUrl: string): void; + setText(text: string): void; +} + +interface ReviewBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasStartAndEndDateBuilder>, + hasSchedulesBuilder> { + withExactlyQuoted(exactlyQuoted: boolean): ReviewBuilder; + withSourceName(sourceName: string): ReviewBuilder; + withSourceUrl(sourceUrl: string): ReviewBuilder; + withText(text: string): ReviewBuilder; +} + +interface Sitelink extends AdWordsEntity, + hasMobilePreferred, + hasSchedules, + hasStartAndEndDate, + hasStats, + isAdGroupChild { + clearDescription1(): void; + clearDescription2(): void; + clearLinkUrl(): void; + getDescription1(): string; + getDescription2(): string; + getId(): number; + getLinkText(): string; + setDescription1(description1: string): void; + setDescription2(description2: string): void; + setLinkText(linkText: string): void; + urls(): SitelinkUrls; +} + +interface SitelinkUrls extends AdWordsUrls, hasSetTrackingTemplate, hasGetFinalUrl, hasSetFinalUrl { + clearMobileFinalUrl(): void; +} + +interface SitelinkBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasStartAndEndDateBuilder>, + hasSchedulesBuilder>, + hasTrackingTemplateBuilder>, + hasFinalUrlBuilder> { + withDescription1(description1: string): SitelinkBuilder; + withDescription2(description2: string): SitelinkBuilder; + withLinkText(linkText: string): SitelinkBuilder; +} + +interface Snippet extends AdWordsEntity, + hasMobilePreferred, + hasSchedules, + hasStartAndEndDate, + hasStats, + isAdGroupChild { + getHeader(): string; + getId(): number; + getValues(): string[]; + setHeader(header: string): void; + setValues(values: string[]): void; +} + +interface SnippetBuilder extends AdWordsBuilder, + hasMobilePreferredBuilder>, + hasStartAndEndDateBuilder>, + hasSchedulesBuilder> { + withHeader(header: string): SnippetBuilder; + withValues(values: string[]): SnippetBuilder; +} + +// Ad Group +interface AdGroup extends AdWordsEntity, canBeEnabled, hasExtensions, hasLabels, hasStats, isCampaignChild { + adParams(): AdWordsSelector; + ads(): AdWordsSelector; + bidding(): AdGroupBidding; + clearNegativeKeyword(keywordText: string): void; + devices(): AdGroupDevices; + display(): AdGroupDisplay; + extensions(): AdGroupExtensions; + getId(): number; + getName(): string; + isRemoved(): boolean; + keywords(): AdWordsSelector; + negativeKeywords(): AdWordsSelector; + newAd(): AdBuilderSpace; + newKeywordBuilder(): KeywordBuilder; + setName(name: string): void; + targeting(): AdGroupTargeting; + urls(): AdGroupUrls; +} + +interface AdGroupUrls extends AdWordsUrls, hasSetTrackingTemplate { + clearTrackingTemplate(): void; +} + +interface AdGroupBuilder extends AdWordsBuilder, + hasBiddingStrategyBuilder>, + hasTrackingTemplateBuilder> { + withCpa(cpa: number): AdGroupBuilder; + withCpc(cpc: number): AdGroupBuilder; + withCpm(cpm: number): AdGroupBuilder; + withName(name: string): AdGroupBuilder; + withStatus(status: string): AdGroupBuilder; +} + +interface AdGroupBidding extends KeywordBidding { + getCpa(): number; + setCpa(cpa: number): void; +} + +interface AdGroupDevices { + clearDesktopBidModifier(): void; + clearMobileBidModifier(): void; + clearTabletBidModifier(): void; + getDesktopBidModifier(): number; + getMobileBidModifier(): number; + getTabletBidModifier(): number; + setDesktopBidModifier(modifier: number): void; + setMobileBidModifier(modifier: number): void; + setTabletBidModifier(modifier: number): void; +} + +interface AdGroupTargeting extends AdWordsTargeting { + getTargetingSetting(): string; + newUserListBuilder(): SearchAdGroupAudienceBuilder; + setTargetingSetting(criterionTypeGroup: CriterionTypeGroup, targetingSetting: TargetingSetting): void; +} + +// Ad Param +interface AdParam extends AdWordsEntity { + getAdGroup(): AdGroup; + getInde(): number; + getInsertionText(): string; + getKeyword(): Keyword; + remove(): void; + setInsertionText(insertionText: string): void; +} + +// Ad +interface Ad extends AdWordsEntity, + canBeEnabled, + hasLabels, + hasStats, + isAdGroupChild { + asType(): AdViewSpace; + getApprovalStatus(): ApprovalStatus; + getDisapprovalReasons(): string[]; + getId(): number; + getPolicyApprovalStatus(): PolicyApprovalStatus; + getPolicyTopics(): PolicyTopic[]; + getType(): AdType; + isType(): AdTypeSpace; + remove(): void; + urls(): AdUrls; +} + +interface AdBuilder extends AdWordsBuilder, hasFinalUrlBuilder, hasTrackingTemplateBuilder { } + +interface AdBuilderSpace { + expandedTextAdBuilder(): ExpandedTextAdBuilder; + gmailImageAdBuilder(): GmailImageAdBuilder; + gmailMultiProductAdBuilder(): GmailMultiProductAdBuilder; + gmailSinglePromotionAdBuilder(): GmailSinglePromotionAdBuilder; + html5AdBuilder(): Html5AdBuilder; + imageAdBuilder(): ImageAdBuilder; + responsiveDisplayAdBuilder(): ResponsiveDisplayAdBuilder; +} + +interface AdTypeSpace { + expandedTextAd(): boolean; + gmailImageAd(): boolean; + gmailMultiProductAd(): boolean; + gmailSinglePromotionAd(): boolean; + html5Ad(): boolean; + imageAd(): boolean; + responsiveDisplayAd(): boolean; +} + +interface AdUrls extends AdWordsUrls, hasGetFinalUrl { } + +interface AdViewSpace { + expandedTextAd(): ExpandedTextAd; + gmailImageAd(): GmailImageAd; + gmailMultiProductAd(): GmailMultiProductAd; + gmailSinglePromotionAd(): GmailSinglePromotionAd; + html5Ad(): Html5Ad; + imageAd(): ImageAd; + responsiveDisplayAd(): ResponsiveDisplayAd; +} + +interface ExpandedTextAd extends Ad { + getDescription(): string; + getHeadlinePart1(): string; + getHeadlinePart2(): string; + getPath1(): string; + getPath2(): string; +} + +interface ExpandedTextAdBuilder extends AdBuilder> { + withDescription(descriptions: string): ExpandedTextAdBuilder; + withHeadlinePart1(headline1: string): ExpandedTextAdBuilder; + withHeadlinePart2(headline2: string): ExpandedTextAdBuilder; + withPath1(path1: string): ExpandedTextAdBuilder; + withPath2(path2: string): ExpandedTextAdBuilder; +} + +interface GmailImageAd extends Ad { + getAdvertiser(): string; + getDescription(): string; + getImage(): Media; + getLogo(): Media; + getName(): string; + getSubject(): string; +} + +interface GmailImageAdBuilder extends AdBuilder> { + withAdvertiser(advertiser: string): GmailImageAdBuilder; + withDescription(description: string): GmailImageAdBuilder; + withDisplayUrl(displayUrl: string): GmailImageAdBuilder; + withImage(image: Media): GmailImageAdBuilder; + withLogo(logo: Media): GmailImageAdBuilder; + withName(name: string): GmailImageAdBuilder; + withSubject(subject: string): GmailImageAdBuilder; +} + +interface GmailMultiProductAd extends Ad { + getAdvertiser(): string; + getContent(): string; + getDescription(): string; + getHeader(): Media; + getHeadline(): string; + getHeadlineColor(): string; + getItemButtonCallsToAction(): string[]; + getItemButtonColor(): string[]; + getItemButtonFinalMobileUrls(): string[]; + getItemButtonFinalUrls(): string[]; + getItemButtonTextColors(): string[]; + getItemButtonTrackingTemplates(): string[]; + getItemImages(): Media[]; + getItemTitleColors(): string[]; + getItemTitles(): string[]; + getLogo(): Media; + getName(): string; + getSubject(): string; +} + +interface GmailMultiProductAdBuilder extends AdBuilder> { + withAdvertiser(advertiser: string): GmailMultiProductAdBuilder; + withContent(content: string): GmailMultiProductAdBuilder; + withDescription(description: string): GmailMultiProductAdBuilder; + withHeader(header: Media): GmailMultiProductAdBuilder; + withHeadline(headline: string): GmailMultiProductAdBuilder; + withHeadlineColor(headlineColor: string): GmailMultiProductAdBuilder; + withItemButtonCallsToAction(itemCallsToAction: string[]): GmailMultiProductAdBuilder; + withItemButtonFinalMobileUrls(itemButtonFinalMobileUrls: string[]): GmailMultiProductAdBuilder; + withItemButtonFinalUrls(itemButtonFinalUrls: string[]): GmailMultiProductAdBuilder; + withItemButtonTrackingTemplates(itemButtonTrackingTemplates: string[]): GmailMultiProductAdBuilder; + withItemImages(itemImages: Media[]): GmailMultiProductAdBuilder; + withItemTitle(itemTitles: string[]): GmailMultiProductAdBuilder; + withLogo(logo: Media): GmailMultiProductAdBuilder; + withName(name: string): GmailMultiProductAdBuilder; + withSubject(subject: string): GmailMultiProductAdBuilder; +} + +interface GmailSinglePromotionAd extends Ad { + getAdvertiser(): string; + getCallToAction(): string; + getCallToActionButtonColor(): string; + getCallToActionTextColor(): string; + getContent(): string; + getDescription(): string; + getHeader(): Media; + getHeadline(): string; + getHeadlineColor(): string; + getImage(): Media; + getLogo(): Media; + getName(): string; + getSubject(): string; +} + +interface GmailSinglePromotionAdBuilder extends AdBuilder> { + withAdvertiser(advertiser: string): GmailSinglePromotionAdBuilder; + withCallToAction(callToAction: string): GmailSinglePromotionAdBuilder; + withCallToActionButtonColor(callToActionButtonColor: string): GmailSinglePromotionAdBuilder; + withCallToActionTextColor(callToActionTextColor: string): GmailSinglePromotionAdBuilder; + withContent(content: string): GmailSinglePromotionAdBuilder; + withDescription(description: string): GmailSinglePromotionAdBuilder; + withDisplayUrl(displayUrl: string): GmailSinglePromotionAdBuilder; + withHeader(header: Media): GmailSinglePromotionAdBuilder; + withHeadline(headline: string): GmailSinglePromotionAdBuilder; + withHeadlineColor(headlineColor: string): GmailSinglePromotionAdBuilder; + withImage(image: Media): GmailSinglePromotionAdBuilder; + withLogo(logo: Media): GmailSinglePromotionAdBuilder; + withName(name: string): GmailSinglePromotionAdBuilder; + withSubject(subject: string): GmailSinglePromotionAdBuilder; +} + +interface Html5Ad extends Ad { + getEntryPoint(): string; + getMediaBundle(): Media; + getName(): string; +} + +interface Html5AdBuilder extends AdBuilder> { + withDisplayUrl(displayUrl: string): Html5AdBuilder; + withEntryPoint(entryPoint: string): Html5AdBuilder; + withMediaBundle(mediaBundle: Media): Html5AdBuilder; + withName(name: string): Html5AdBuilder; + withDimensions(dimensions: string): Html5AdBuilder; +} + +interface ImageAd extends Ad { + getImage(): Media; + getName(): string; +} + +interface ImageAdBuilder extends AdBuilder> { + withDisplayUrl(displayUrl: string): ImageAdBuilder; + withImage(image: Media): ImageAdBuilder; + withName(name: string): ImageAdBuilder; +} + +interface PolicyTopic { + getId(): string; + getName(): string; + getType(): string; +} + +interface ResponsiveDisplayAd extends Ad { + getBusinessName(): string; + getDescription(): string; + getLogoImage(): Media; + getLongHeadline(): string; + getMarketingImage(): Media; + getShortHeadline(): string; +} + +interface ResponsiveDisplayAdBuilder extends AdBuilder> { + withBusinessName(businessName: string): ResponsiveDisplayAdBuilder; + withDescription(description: string): ResponsiveDisplayAdBuilder; + withLogoImage(logo: Media): ResponsiveDisplayAdBuilder; + withLongHeadline(longHeadline: string): ResponsiveDisplayAdBuilder; + withMarketingImage(marketingImage: Media): ResponsiveDisplayAdBuilder; + withShortHeadline(shortHeadline: string): ResponsiveDisplayAdBuilder; +} + +// Bidding Strategies +interface BiddingStrategy extends hasStats { + adGroups(): AdWordsSelector; + campaigns(): AdWordsSelector; + getId(): number; + getName(): string; + getType(): string; + keywords(): AdWordsSelector; + shoppingAdGroups(): AdWordsSelector; // TODO: ShoppingAdGroup + shoppingCampaigns(): AdWordsSelector; // TODO: ShoppingCampaigns +} + +// Budget Orders +interface BillingAccount { + getId(): number; + getName(): string; + getPrimaryBillingId(): string; + getSecondaryBillingId(): string; +} + +interface BudgetOrder { + getBillingAccount(): BillingAccount; + getEndDatetime(): AdWordsDate; + getId(): number; + getName(): string; + getPoNumber(): number; + getSpendingLimit(): number; + getStartDateTime(): AdWordsDate; + getTotalAdjustments(): number; +} + +// Budgets +interface Budget extends AdWordsEntity, hasStats { + campaigns(): AdWordsSelector; + getAmount(): number; + getDeliveryMethod(): string; + getId(): number; + getName(): string; + isExplicitlyShared(): boolean; + setAmount(amount: number): void; +} + +// Bulk Uploads +interface BulkUploads { + newCsvUpload(columnNames: string[], optArgs: FileUploadArguments): CsvUpload; + newFileUpload(file: GoogleAppsScript.Spreadsheet.Sheet | GoogleAppsScript.Base.Blob | GoogleAppsScript.Drive.File, optArgs: FileUploadArguments): FileUpload; +} + +interface BulkUpload { + forCampaignManagement(): T; + forOfflineConversions(): T; + preview(): void; + setFileName(fileName: string): T; +} + +interface FileUpload extends BulkUpload { + apply(): void; +} + +interface CsvUpload extends BulkUpload { + apply(): void; + append(row: {}): CsvUpload; +} + +interface FileUploadArguments { + fileLocale?: string; + moneyInMicros?: boolean; + timeZone?: string; +} + +// Campaign +interface Campaign extends AdWordsEntity, canBeEnabled, hasLabels, hasStartAndEndDate, hasStats { + adGroups(): AdWordsSelector; + addAdSchedule(adSchedule: AdSchedule): AdWordsOperation; + addAdSchedule(dayOfWeek: DayOfWeekString, startHour: number, startMinute: number, endHour: number, endMinute: number, bidModifier: number): AdWordsOperation; + addCallout(calloutExtension: Callout): AdWordsOperation; + addExcludedPlacementList(excludedPlacementList: ExcludedPlacementList): void; + addLocation(locationId: number | TargetedLocation | LocationObject): AdWordsOperation; + addLocation(locationId: number, bidModifier: number): AdWordsOperation; + addMessage(messageExtension: Message): AdWordsOperation; + addMobileApp(mobileAppExtension: MobileApp): AdWordsOperation; + addNegativeKeywordLIst(negativeKeywordList: NegativeKeywordList): void; + addPhoneNumber(phoneNumberExtension: PhoneNumber): AdWordsOperation; + addProximity(proximity: ProximityObject | TargetedProximity): AdWordsOperation; + addProximity(latitude: number, longitude: number, radius: number, radiusUnits: RadiusUnits, optArgs: { bidModifier: number, address: AddressObject}): AdWordsOperation; + addReview(reviewExtension: Review): AdWordsOperation; + addSiteLink(sitelinkExtension: Sitelink): AdWordsOperation; + addSnippet(snippetExtension: Snippet): AdWordsOperation; + ads(): AdWordsSelector; + bidding(): CampaignBidding; + createNegativeKeyword(keywordText: string): void; + display(): CampaignDisplay; + excludeLocation(location: ExcludedLocation | number | { id: number }): AdWordsOperation; + excludedPlacementLists(): AdWordsSelector; + extensions(): CampaignExtensions; + getAdRotationType(): AdRotationType; + getBiddingStrategyType(): BiddingStrategyString; + getBudget(): Budget; + getId(): number; + getName(): string; + isRemoved(): boolean; + keywords(): AdWordsSelector; + negativeKeywordLists(): AdWordsSelector; + negativeKeywords(): AdWordsSelector; + newAdGroupBuilder(): AdGroupBuilder; + removeCallout(calloutExtension: Callout): void; + removeExcludedPlacementList(excludedPlacementList: ExcludedPlacementList): void; + removeMessage(message: Message): void; + removeMobileApp(mobileApp: MobileApp): void; + removeNegativeKeywordList(negativeKeywordList: NegativeKeywordList): void; + removePhoneNumber(phoneNumber: PhoneNumber): void; + removeReview(review: Review): void; + removeSitelink(sitelkin: Sitelink): void; + removeSnippet(snippet: Snippet): void; + setAdRotationType(adRotationType: AdRotationType): void; + setName(name: string): void; + targeting(): CampaignTargeting; + urls(): CampaignUrls; +} + +interface CampaignBidding extends AdWordsBidding, canSetBiddingStrategy { } + +interface CampaignTargeting extends AdWordsTargeting { + adSchedules(): AdWordsSelector; + excludedContentLabels(): AdWordsSelector; + excludedLocations(): AdWordsSelector; + getTargetingSetting(criterionTypeGroup: CriterionTypeGroup): TargetingSetting; + languages(): AdWordsSelector; + newUserListBuilder(): SearchCampaignAudienceBuilder; + platforms(): AdWordsSelector; + setTargetingSetting(criterionTypeGroup: CriterionTypeGroup, targetingSetting: TargetingSetting): void; + targetedLocations(): AdWordsSelector; + targetedProximities(): AdWordsSelector; +} + +interface CampaignUrls extends AdWordsUrls, hasSetTrackingTemplate { + clearTrackingTemplate(): void; +} + +// Common +interface CurrentAccount extends AdWordsEntity, hasStats { + addCallout(calloutExtension: Callout): AdWordsOperation; + addMobileApp(mobileAppExtension: MobileApp): AdWordsOperation; + addReview(reviewExtension: Review): AdWordsOperation; + addSnippet(snippetExtension: Snippet): AdWordsOperation; + extensions(): AccountExtensions; + getCurrencyCode(): string; + getCustomerId(): string; + getName(): string; + getTimeZone(): string; + removeCallout(calloutExtension: Callout): void; + removeMobileApp(mobileAppExtension: MobileApp): void; + removeReview(reviewExtension: Review): void; + removeSnippet(snippetExtension: Snippet): void; +} + +interface ExecutionInfo { + getRemainingCreateQuota(): number; + getRemainingGetQuota(): number; + getRemainingTime(): number; + isPreview(): boolean; +} + +// Display +interface DisplayBuilder extends AdWordsBuilder { + exclude(): AdWordsOperation; + withCpc(cpc: number): T; + withCpm(cpm: number): T; +} + +interface DisplayBidding extends AdWordsBidding { + clearCpc(): void; + clearCpm(): void; + getCpc(): number; + getCpm(): number; + setCpc(cpc: number): void; + setCpm(cpm: number): void; +} + +interface Audience extends ExcludedAudience, hasStats { + bidding(): AudienceBidding; + isEnabled(): boolean; + isPaused(): boolean; +} + +interface ExcludedAudience extends isAdGroupChild { + getAudienceId(): number; + getAudienceType(): AudienceType; + getId(): number; + remove(): void; +} + +interface AudienceBuilder extends DisplayBuilder> { + withAudience(userList: UserList): AudienceBuilder; + withAudienceId(audienceId: number): AudienceBuilder; + withAudienceType(audienceType: AudienceType): AudienceBuilder; +} + +interface AudienceBidding extends AdWordsBidding { + clearCpc(): void; + clearCpm(): void; + getCpc(): number; + getCpm(): number; + setCpc(cpc: number): void; + setCpm(cpm: number): void; +} + +interface DisplayKeyword extends ExcludedDisplayKeyword, hasStats { + bidding(): DisplayKeywordBidding; +} + +interface ExcludedDisplayKeyword extends isAdGroupChild { + getId(): number; + getText(): string; + remove(): void; +} + +interface DisplayKeywordBuilder extends DisplayBuilder> { + withText(text: string): DisplayKeywordBuilder; +} + +interface DisplayKeywordBidding extends DisplayBidding, canSetBiddingStrategy { + clearStrategy(): void; +} + +interface Placement extends ExcludedPlacement, hasStats { + bidding(): PlacementBidding; + isEnabled(): boolean; + isManaged(): boolean; + isPaused(): boolean; +} + +interface ExcludedPlacement extends isAdGroupChild { + getId(): number; + getUrl(): string; + remove(): void; +} + +interface PlacementBuilder extends DisplayBuilder> { + withUrl(url: string): PlacementBuilder; +} + +interface PlacementBidding extends DisplayBidding, canSetBiddingStrategy { + clearStrategy(): void; +} + +interface Topic extends ExcludedTopic, hasStats { + bidding(): TopicBidding; + isEnabled(): boolean; + isPaused(): boolean; +} + +interface ExcludedTopic extends isAdGroupChild { + getId(): number; + getTopicId(): number; + remove(): void; +} + +interface TopicBuilder extends DisplayBuilder> { + withTopicId(topicId: number): TopicBuilder; +} + +interface TopicBidding extends AdWordsBidding { + clearCpc(): void; + clearCpm(): void; + getCpc(): number; + getCpm(): number; + setCpc(cpc: number): void; + setCpm(cpm: number): void; +} + +interface AdGroupDisplay extends Display { + excludedAudiences(): AdWordsSelector; + excludedKeywords(): AdWordsSelector; + excludedPlacements(): AdWordsSelector; + excludedTopics(): AdWordsSelector; + newAudienceBuilder(): AudienceBuilder; + newKeywordBuilder(): DisplayKeywordBuilder; + newPlacementBuilder(): PlacementBuilder; + newTopicBuilder(): TopicBuilder; +} + +interface CampaignDisplay extends Display { + excludedAudiences(): AdWordsSelector; + excludedKeywords(): AdWordsSelector; + excludedPlacements(): AdWordsSelector; + excludedTopics(): AdWordsSelector; + newAudienceBuilder(): AudienceBuilder; + newKeywordBuilder(): DisplayKeywordBuilder; + newPlacementBuilder(): PlacementBuilder; + newTopicBuilder(): TopicBuilder; +} + +interface Display { + audiences(): AdWordsSelector; + keywords(): AdWordsSelector; + placements(): AdWordsSelector; + topics(): AdWordsSelector; +} + +// Keywords +interface Keyword extends AdWordsEntity, canBeEnabled, hasLabels, hasStats, isAdGroupChild { + adParams(): AdWordsSelector; + bidding(): KeywordBidding; + clearDesinationUrl(): void; + getApprovalStatus(): ApprovalStatus; + getFirstPageCpc(): number; + getId(): number; + getMatchType(): MatchType; + getQualityScore(): number; + getText(): string; + getTopOfPageCpc(): number; + remove(): void; + setAdParam(index: number, insertionText: string): void; + urls(): KeywordUrls; +} + +interface KeywordBidding extends AdWordsBidding, canSetBiddingStrategy { + clearStrategy(): void; + getCpc(): number; + getCpm(): number; + setCpc(cpc: number): void; + setCpm(cpm: number): void; +} + +interface KeywordBuilder extends AdWordsBuilder, + hasBiddingStrategyBuilder>, + hasTrackingTemplateBuilder>, + hasFinalUrlBuilder> { + withCpc(cpc: number): KeywordBuilder; + withCpm(cpm: number): KeywordBuilder; + withText(text: string): KeywordBuilder; +} + +interface KeywordUrls extends AdWordsUrls, hasGetFinalUrl, hasSetTrackingTemplate, hasSetFinalUrl { + clearFinalUrl(): void; + clearMobileFinalUrl(): void; + clearTrackingTemplate(): void; +} + +// Labels +interface Label extends AdWordsEntity { + adGroups(): AdWordsSelector; + ads(): AdWordsSelector; + campaigns(): AdWordsSelector; + getColor(): string; + getDescription(): string; + getId(): string; + getName(): string; + keywords(): AdWordsSelector; + remove(): void; + setColor(color: string): void; + setDescription(description: string): void; + setName(name: string): void; +} + +// Media +interface AdMedia { + media(): AdWordsSelector; + newImageBuilder(): ImageBuilder; + newMediaBundleBuilder(): MediaBundleBuilder; + newVideoBuilder(): VideoBuilder; +} + +interface Dimensions { + getHeight(): number; + getWidth(): number; +} + +interface ImageBuilder extends AdWordsBuilder { + withData(data: GoogleAppsScript.Base.Blob): ImageBuilder; + withName(name: string): ImageBuilder; +} + +interface Media { + getDimensions(): MediaDimensions; + getFileSize(): number; + getId(): number; + getMimeType(): string; + getName(): string; + getReferenceId(): string; + getSourceUrl(): string; + getType(): MediaType; + getUrls(): MediaUrls; + getYouTubeVideoId(): string | void; +} + +interface MediaBundleBuilder extends AdWordsBuilder { + withData(data: GoogleAppsScript.Base.Blob): MediaBundleBuilder; + withName(name: string): MediaBundleBuilder; +} + +interface MediaDimensions { + getFullMediaDimensions(): Dimensions; + getPreviewMediaDimensions(): Dimensions; + getShrunkenMediaDimensions(): Dimensions; + getVideoThumbnailDimensions(): Dimensions; +} + +interface MediaUrls { + getFullMediaUrl(): string; + getPreviewMediaUrl(): string; + getShrunkenMediaUrl(): string; + getVideoThumbnailMediaUrl(): string; +} + +interface VideoBuilder extends AdWordsBuilder { + withYouTubeVideoId(youTubeVideoId: string): VideoBuilder; +} + +// Negative Keywords +interface NegativeKeyword extends AdWordsEntity, isAdGroupChild { + getMatchType(): MatchType; + getText(): string; + remove(): void; +} + +// Reports +interface AdWordsReport { + exportToSheet(sheet: GoogleAppsScript.Spreadsheet.Sheet): void; + getColumnHeader(awqlColumnName: string): AdWordsReportColumnHeader; + rows(): AdWordsReportRowIterator; +} + +interface AdWordsReportRow { + formatForUpload(): {}; +} + +interface AdWordsReportRowIterator { + hasNext(): boolean; + next(): AdWordsReportRow; +} + +interface AdWordsReportColumnHeader { + getBulkUploadColumnName(): string; + getReportColumnName(): string; +} + +// Shared Sets +interface ExcludedPlacementList extends AdWordsEntity { + addExcludedPlacement(url: string): void; + addExcludedPlacements(urls: string[]): void; + campaigns(): AdWordsSelector; + excludedPlacements(): AdWordsSelector; + getId(): number; + getName(): string; + setName(name: string): void; +} + +interface ExcludedPlacementListBuilder extends AdWordsBuilder { + withName(name: string): ExcludedPlacementListBuilder; +} + +interface SharedExcludedPlacement extends AdWordsEntity { + getExcludedPlacementList(): ExcludedPlacementList; + getUrl(): string; + remove(): void; +} + +interface NegativeKeywordList extends AdWordsEntity { + addNegativeKeyword(keywordText: string): void; + addNegativeKeywords(keywordTexts: string[]): void; + campaigns(): AdWordsSelector; + getId(): number; + getName(): string; + negativeKeywords(): AdWordsSelector; + setName(): string; +} + +interface NegativeKeywordListBuilder extends AdWordsBuilder { + withName(name: string): NegativeKeywordListBuilder; +} + +interface SharedNegativeKeyword extends AdWordsEntity { + getMatchType(): MatchType; + getNegativeKeywordList(): NegativeKeywordList; + getText(): string; + remove(): void; +} + +// Shopping + +// Targeting +interface AdSchedule extends AdWordsEntity, canSetBidModifier, hasStats, isCampaignChild { + getCampaignType(): CampaignType; + getDayOfWeek(): DayOfWeekString; + getEndHour(): number; + getEndMinute(): number; + getId(): number; + getStartHour(): number; + getStartMinute(): number; + getVideoCampaign(): Campaign; // TODO: VideoCampaign + remove(): void; +} + +interface SearchAdGroupAudience extends SearchAdGroupExcludedAudience, hasStats { + bidding(): SearchAudienceBidding; + isEnabled(): boolean; + isPaused(): boolean; +} + +interface SearchAdGroupAudienceBuilder extends AdWordsBuilder { + exclude(): AdWordsOperation; + withAudience(userList: UserList): SearchAdGroupAudienceBuilder; + withAudienceId(audienceId: number): SearchAdGroupAudienceBuilder; + withBidModifier(modifier: number): SearchAdGroupAudienceBuilder; +} + +interface SearchAdGroupExcludedAudience extends isAdGroupChild { + getAudienceId(): number; + getId(): number; + getName(): string; + remove(): void; +} + +interface SearchAudienceBidding extends canSetBidModifier { + clearBidModifier(): void; +} + +interface SearchCampaignAudience extends SearchCampaignExcludedAudience { + bidding(): SearchAudienceBidding; + isEnabled(): boolean; + isPaused(): boolean; +} + +interface SearchCampaignAudienceBuilder extends AdWordsBuilder { + exclude(): AdWordsOperation; + withAudience(userList: UserList): SearchCampaignAudienceBuilder; + withAudienceId(audienceId: number): SearchCampaignAudienceBuilder; + withBidModifier(modifier: number): SearchCampaignAudienceBuilder; +} + +interface SearchCampaignExcludedAudience extends isCampaignChild { + getAudienceId(): number; + getId(): number; + getName(): string; + remove(): void; +} + +interface ExcludedContentLabel extends AdWordsEntity, isCampaignChild { + getCampaignType(): CampaignType; + getContentLabelType(): string; // TODO: ContentLabelType + getId(): number; + getVideoCampaign(): Campaign; // TODO: VideoCampaign + remove(): void; +} + +interface ExcludedLocation extends AdWordsEntity, isCampaignChild { + getCampaignType(): CampaignType; + getCountryCode(): string; + getId(): number; + getName(): string; + getTargetType(): TargetType; + getTargetingStatus(): TargetingStatus; + getVideoCampaign(): Campaign; // TODO: VideoCampaign + remove(): void; +} + +interface Language extends AdWordsEntity, isCampaignChild { + getCampaignType(): CampaignType; + getId(): number; + getName(): string; + getVideoCampaign(): Campaign; // TODO: VideoCampaign + remove(): void; +} + +interface TargetedLocation extends ExcludedLocation, canSetBidModifier, hasStats { } + +interface Platform extends AdWordsEntity, canSetBidModifier, hasStats, isCampaignChild { + getCampaignType(): CampaignType; + getId(): number; + getName(): string; + getVideoCampaign(): Campaign; // TODO: VideoCampaign +} + +interface Address { + getCityName(): string; + getCountryCode(): string; + getPostalCode(): string; + getProvinceCode(): string; + getProvinceName(): string; + getStreetAddress(): string; + getStreetAddress2(): string; +} + +interface TargetedProximity extends AdWordsEntity, canSetBidModifier, hasStats, isCampaignChild { + getAddress(): Address; + getCampaignType(): CampaignType; + getId(): number; + getLatitude(): number; + getLongitude(): number; + getRadius(): number; + getRadiusUnits(): RadiusUnits; + getVideoCampaign(): Campaign; // TODO: VideoCampaign + remove(): void; +} + +interface Targeting extends VideoCampaignTargeting { + audiences(): AdWordsSelector; + excludedAudiences(): AdWordsSelector; +} + +interface VideoCampaignTargeting { + adSchedules(): AdWordsSelector; + excludedContentLabels(): AdWordsSelector; + excludedLocations(): AdWordsSelector; + languages(): AdWordsSelector; + platforms(): AdWordsSelector; + targetedLocations(): AdWordsSelector; + targetedProximities(): AdWordsSelector; +} + +// User Lists +interface UserList { + close(): void; + excludedAdGroups(): AdWordsSelector; + excludedCampaigns(): AdWordsSelector; + getDescription(): string; + getId(): number; + getMembershipLifeSpan(): number; + getName(): string; + getSizeForDisplay(): number; + getSizeForSearch(): number; + getSizeRangeForDisplay(): UserListSizeRange; + getSizeRangeForSearch(): UserListSizeRange; + getType(): UserListType; + isClosed(): boolean; + isEligibleForDisplay(): boolean; + isEligibleForSearch(): boolean; + isOpen(): boolean; + isReadOnly(): boolean; + open(): void; + setDescription(description: string): void; + setMembershipLifeSpan(membershipLifeSpan: number): void; + setName(name: string): void; + targetedAdGroups(): AdWordsSelector; + targetedCampaigns(): AdWordsSelector; +} + +// Video + +// Non-entity +interface ExtensionSchedule { + getDayOfWeek(): DayOfWeekString; + getEndHour(): number; + getEndMinute(): number; + getStartHour(): number; + getStartMinute(): number; +} + +interface ExtensionScheduleInput { + dayOfWeek?: DayOfWeekString; + startHour?: number; + startMinute?: number; + endHour?: number; + endMinute?: number; +} + +interface LocationObject { + id: number; + bidModifier?: number; +} + +interface ProximityObject { + latitude: number; + longitude: number; + radius: number; + radiusUnits: RadiusUnits; + bidModifier?: number; + address?: AddressObject; +} + +interface AddressObject { + streetAddress: string; + streetAddress2: string; + cityName: string; + provinceName: string; + provinceCode: string; + postalCode: string; + countryCode: string; +} + +interface ReportOptionArguments { + includeZeroImpressions?: boolean; + returnMoneyInMicros?: boolean; + apiVersion?: string; + resolveGeoNames?: boolean; +} + +// Extendables +interface canBeEnabled { + enable(): void; + isEnabled(): boolean; + isPaused(): boolean; + pause(): void; +} + +interface canSetBiddingStrategy { + setStrategy(biddingStrategy: BiddingStrategyString | BiddingStrategy): void; +} + +interface canSetBidModifier { + getBidModifier(): number; + setBidModifier(modifier: number): void; +} + +interface hasBiddingStrategyBuilder { + withBiddingStrategy(biddingStrategy: BiddingStrategyString | BiddingStrategy): B; +} + +interface hasExtensions { + addCallout(calloutExtension: Callout): AdWordsOperation; + addMessage(messageExtension: Message): AdWordsOperation; + addMobileApp(mobileAppExtension: MobileApp): AdWordsOperation; + addPhoneNumber(phoneNumberExtension: PhoneNumber): AdWordsOperation; + addReview(reviewExtension: Review): AdWordsOperation; + addSitelink(sitelinkExtension: Sitelink): AdWordsOperation; + addSnippet(snippetExtension: Snippet): AdWordsOperation; + removeCallout(calloutExtension: Callout): void; + removeMessage(messageExtension: Message): void; + removeMobileApp(mobileAppExtension: MobileApp): void; + removePhoneNumber(phoneNumberExtension: PhoneNumber): void; + removeReview(reviewExtension: Review): void; + removeSitelink(sitelinkExtension: Sitelink): void; + removeSnippet(snippetExtension: Snippet): void; +} + +interface hasGetFinalUrl { + getFinalUrl(): string; + getMobileFinalUrl(): string; +} +interface hasSetFinalUrl { + setFinalUrl(url: string): void; + setMobileFinalUrl(url: string): void; +} +interface hasFinalUrlBuilder { + withFinalUrl(url: string): B; + withMobileFinalUrl(url: string): B; +} + +interface hasLabels { + applyLabel(name: string): void; + labels(): AdWordsSelector