How to change Portfolio ROAS at different times of day & day of week

705 views
Skip to first unread message

Kate Bushell

unread,
Sep 7, 2021, 12:36:45 PM9/7/21
to Google Ads Scripts Forum
Is it possible to build a script similar to an ad schedule for different time blocks during the day and day of week by bid strategy?


Google Ads Scripts Forum Advisor

unread,
Sep 8, 2021, 4:22:06 AM9/8/21
to adwords...@googlegroups.com
Hi Kate,

Thanks for reaching out. Harry here, from the Google Ads Scripts Team.

Can you kindly confirm which Google Ads entity you would like to manage bid strategy based on date/time? I would also appreciate it if you can provide mo details or step on what you would like to achieve and or screenshots describing your concern.

Thanks,
Google Logo
Harry Cliford Rivera
Google Ads Scripts Team
 


ref:_00D1U1174p._5004Q2NS5mh:ref

Kate Bushell

unread,
Sep 8, 2021, 12:40:12 PM9/8/21
to Google Ads Scripts Forum
The portfolio ROAS bidding Target ROAS is the entity we would like to change.

Essentially we would like to - if day of week = Friday  
and Hour of day  = (xx) 
Change ROAS target = "Name of ROAS stratetgy"  = 500%


Thank you,

Google Ads Scripts Forum Advisor

unread,
Sep 8, 2021, 11:10:00 PM9/8/21
to adwords...@googlegroups.com
Hi Kate,

Thanks for coming back. Unfortunately, changing value of Target ROAS bid strategies is currently not supported through Google Ads Scripts. At the BiddingStrategy level, you would only be able to retrieve details like strategy type, ID, and ad groups or campaigns where the bid strategy is applied. In CampaignBidding you change strategy types through the setStrategy method (See Bidding for supported anonymous and flexible bid strategy types). Moreover, the AdGroupBidding would only let you manage CPA, CPC, CPM values and retrieve strategy details.

On the other hand, can you clarify on which specific Google Ads entity you would like to manage the Target ROAS bid strategy value so I can check on existing feature requests for it or file one instead on your behalf?

Kate Bushell

unread,
Sep 9, 2021, 2:42:33 PM9/9/21
to Google Ads Scripts Forum
Yes, please. 

Thank you!

Google Ads Scripts Forum Advisor

unread,
Sep 9, 2021, 10:41:46 PM9/9/21
to adwords...@googlegroups.com
Hi Kate,

Can you clarify on which specific Google Ads entity level you would like to manage the Target ROAS bid strategy value so I can check on existing feature requests for it or file one instead on your behalf?

Kate Bushell

unread,
Dec 3, 2021, 4:45:47 PM12/3/21
to Google Ads Scripts Forum

Would this work for changing ROAS targets at the campaign level?
var campaign = AdsApp.campaigns()
    .withCondition("Name = 'Test Campaign'")
    .get()
    .next();
TARGET_ROAS  ().setTarget ("300");

Kate Bushell

unread,
Dec 3, 2021, 5:01:04 PM12/3/21
to Google Ads Scripts Forum

Would this work?

//Spreadsheet URL here

var SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/17PdMRoauA35NYhNNV_72h6HRWYjWtIIOlqDMeN5vMdo/edit?usp=sharing";

//Sheet (tab) name here

var SHEET_NAME = "ROASBIDS";

 

var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);

var sheet = ss.getSheetByName(SHEET_NAME);

function main() {

  var row = 2;

  while(sheet.getRange(row, 1).getValue()){

    var campaignName = sheet.getRange(row, 1).getValue();

    var TARGET_ROAS = sheet.getRange(row, 3).getValue();

       if(sheet.getRange(row, 2).getValue()){



On Thursday, September 9, 2021 at 8:41:46 PM UTC-6 adsscripts wrote:

Google Ads Scripts Forum Advisor

unread,
Dec 6, 2021, 3:02:46 AM12/6/21
to adwords...@googlegroups.com
Hi Kate,

Thanks for following up here. Kindly provide your CID and script name so I can take a look closer at your script and guide you accordingly. I was also not able to access the spreadsheet through the link you have provided so I would appreciate it if you can double check if sharing is enabled in the sheet's settings or attach a local file copy of the sheet instead. You may send the spreadsheet privately via the reply to author option.

Looking forward to your reply.

Kate Bushell

unread,
Dec 6, 2021, 2:51:48 PM12/6/21
to Google Ads Scripts Forum
Hi Harry - CID 938-155-7572 - Updated the sheet for sharing.

Look forward to chatting. :)

Kate

Google Ads Scripts Forum Advisor

unread,
Dec 7, 2021, 12:47:58 AM12/7/21
to adwords...@googlegroups.com
Hi Kate,

I work along with Harry. Allow me to assist you in this.

I've checked the CID that you provided, unfortunately, I'm only seeing one script which is not related to the concern you reported here.

On the other hand, I could see that you're trying to update ROAS on the campaign level based on the script that you provided on this thread. I'm afraid that the tROAS - target return on ad spend at the Campaign level are currently not supported in the Google Ads Scripts. You may only manage BiddingStategies at this entity level. Please see also CampaignBidding and Bidding - Strategy types for your reference. On the other hand, you may retrieve target CPA at the AdGroup level by using the getCpa() method, but not the tROAS.

Feature requests has already been filed in the past so allow me to make a follow up on your behalf. Please do note that all requests are not guaranteed to be supported soon in the Google Ads Scripts. In the meantime, please follow our blog for updates and new releases.

Regards,
Google Logo
Teejay Wennie Pimentel
Google Ads Scripts Team
 


ref:_00D1U1174p._5004Q2NS5mh:ref

Kate Bushell

unread,
Dec 8, 2021, 12:59:02 PM12/8/21
to Google Ads Scripts Forum
Is there any entity level that we can change tROAS with a script? 

Thanks, 
Kate

Google Ads Scripts Forum Advisor

unread,
Dec 9, 2021, 12:58:53 AM12/9/21
to adwords...@googlegroups.com
Hi Kate,

You may utilize our Google Ads Scripts Beta version AdsApp.CampaignBidding, then use the setTargetRoas(targetRoas) method.

Kate Bushell

unread,
Dec 9, 2021, 10:34:30 AM12/9/21
to Google Ads Scripts Forum
Ok great news! Not exactly sure how to start, based on the script i shared with you how would be tweek it to work in beta?

Thanks

Google Ads Scripts Forum Advisor

unread,
Dec 10, 2021, 1:59:37 AM12/10/21
to adwords...@googlegroups.com
Hi Kate,

You need to switch your script to use the new scripts experience, to the left of "ADVANCED APIS" above the editor area. You may want to check our Google Ads Scripts beta - Get started guide.

Paula Marmolejo Morazo

unread,
Dec 17, 2021, 2:10:14 PM12/17/21
to Google Ads Scripts Forum
Hi all,

 I was going through the forum and I am interested on this topic, as I'm working on a script to do exactly the same (be able to change tROAS from a google sheet)

I have Google ads scripts beta enabled and I can see that I can change the bidding strategy type:

Campaign_selector=AdsApp.shoppingCampaigns().withCondition('campaign.name = "Shopping_Campaign"').get().bidding().setStrategy('MAXIMIZE_CONVERSION_VALUE')

However, what I want is not to change the bidding strategy but the target ROAS within the strategy. 
  • I read somewhere that it will be possible to do something like 'TARGET_ROAS:900' but I don't manage to make it work.
Is there a way of doing this?

Thanks,

Google Ads Scripts Forum Advisor

unread,
Dec 20, 2021, 1:04:18 AM12/20/21
to adwords...@googlegroups.com
Hello,

Thanks for reaching out here. Harry here, from the Google Ads Scripts Team.

Through the new Google Ads Scripts Beta, you should be able to manage Campaign Target ROAS using the setTargetRoas method. Also, please be guided of the proper use of the setStrategy method which should let you supply different arguments. I would also recommend that you take look at the AdWords API bidding guide which contains a list of all valid standard bidding strategies and the scripts beta own Bidding guide.

Should you need more help, please let me know.

Thanks,
Google Logo
Harry Cliford Rivera
Google Ads Scripts Team
 


ref:_00D1U1174p._5004Q2NS5mh:ref

Paula Marmolejo Morazo

unread,
Dec 20, 2021, 3:16:17 PM12/20/21
to Google Ads Scripts Forum
Hi,

Thanks for the links, I managed to make this work on shopping campaigns!

For search campaigns however I tried different methods without much success:

When trying the argument building method, I get the error "campaign.bidding.argsBuilder is not a function
at main (Code:21:24)"

Script:
function main() {
  // This example snippet assumes the user has a campaign named "Online Sales".
  const campaignName = 'Campaign Name';
  const campaignIterator =
      AdsApp.campaigns()
          .withCondition(`campaign.name = '${campaignName}'`)
          .get();

const campaign = campaignIterator.next();
const args =
      campaign.bidding.argsBuilder().withTargetRoas(1.3);
  campaign.bidding().setStrategy('TARGET_ROAS', args);
}


When trying the setStrategy method there are different outputs depending on the campaign I test it on:
  • On a campaign that already has target ROAS in place: No changes get made and no log error is triggered
  • On a campaign that doesn't have target ROAS: " Unsupported strategy type TARGET_ROAS at ju.setStrategy (adsapp_compiled:8869:19) at Object.<anonymous> (adsapp_compiled:15246:46)"
Script:

function main() {
  // This example snippet assumes the user has a campaign named "Online Sales".
  const campaignName = 'Campaign Name';
  const campaignIterator =
      AdsApp.campaigns()
          .withCondition(`campaign.name = '${campaignName}'`)
          .get();

const campaign = campaignIterator.next();
campaign.bidding().setStrategy('TARGET_ROAS', {targetRoas: 1.3});
}


When using the setTargetRoas() method (on a campaign with tROAS): "'Campaign Name' employs a TARGET_ROAS bidding strategy. This type of bidding strategy does not support target roas."

Script:

function main() {
  // This example snippet assumes the user has a campaign named "Online Sales".
  const campaignName = 'Campaign Name';
  const campaignIterator =
      AdsApp.campaigns()
          .withCondition(`campaign.name = '${campaignName}'`)
          .get();

const campaign = campaignIterator.next();
campaign.bidding().setTargetRoas(500);
}


For this last option to work, would I need to change my campaign to maximise conversion value with target ROAS? Is there any other way of doing it?

Thanks for the help!

Paula.

Google Ads Scripts Forum Advisor

unread,
Dec 21, 2021, 1:37:33 AM12/21/21
to adwords...@googlegroups.com
Hi Paula,

Thanks for getting back. Can you kindly provide your Google Ads account ID and script name instead so I can have a closer look at the issue you are encountering?

Paula Marmolejo Morazo

unread,
Jan 17, 2022, 1:28:41 PM1/17/22
to Google Ads Scripts Forum
Hi,

Apologies for the delay here, I had to postpone the project.

Is there a way I can send you the Ads account ID in private message?

Thanks,

Paula.

Google Ads Scripts Forum Advisor

unread,
Jan 17, 2022, 10:21:47 PM1/17/22
to adwords...@googlegroups.com
Hi Paula,

Thanks for your email. You may send those requested details on this email ( googleadsscr...@google.com) instead. Also, please include the link of this thread so we could keep track of this existing conversation.


Looking forward to your reply.

Kate Bushell

unread,
Feb 15, 2022, 3:17:45 PM2/15/22
to Google Ads Scripts Forum
Paula - Curious if you ever got a working script for moving TROAS by time?

Thanks!
Kate

Kate Bushell

unread,
Feb 15, 2022, 4:35:23 PM2/15/22
to Google Ads Scripts Forum
Hi all, 
Trying to revive this thread in an effort get this script working - I can't get my script to actually change my TROAS is it possible to get some assistance in troubleshooting?

//Spreadsheet URL here
var SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/17PdMRoauA35NYhNNV_72h6HRWYjWtIIOlqDMeN5vMdo/edit?usp=sharing";
//Sheet (tab) name here
var SHEET_NAME = "ROASBIDS";
 
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var sheet = ss.getSheetByName(SHEET_NAME);
function main() {
  var row = 2;
  while(sheet.getRange(row, 1).getValue()){
    var campaignName = sheet.getRange(row, 1).getValue();
    var setTargetRoas = sheet.getRange(row, 3).getValue();
      if(sheet.getRange(row, 2).getValue()){
       
      var adGroupName = sheet.getRange(row, 2).getValue();
      Logger.log("adgroup level" + adGroupName);
     var adgroup = AdWordsApp.adGroups()
     .withCondition("Name = '"+ adGroupName +"'")
     .withCondition("CampaignName = '"+ campaignName +"'")
     .get();
      if(adgroup.hasNext()){
 
      }
    }else{
      Logger.log("campaign level: " + campaignName);
     var campaigns = AdsApp.campaigns().withCondition("CampaignName = '"+ campaignName +"'").get();
      if(campaigns.hasNext()){
        var campaignTargets = campaigns.next().targeting().platforms().get();
      }
      while(campaignTargets.hasNext()){
      var campaignTarget = campaignTargets.next();
      if(campaignTarget.getName()==""){
        campaignTarget.setTargetRoas;
     
      }
      }
    }
    row++;

  }
   
   
  var row = 2;
  while(sheet.getRange(row, 1).getValue()){
    var campaignName = sheet.getRange(row, 1).getValue();
    var setTargetRoas = sheet.getRange(row, 3).getValue();
    if(sheet.getRange(row, 2).getValue()){
       
      var adGroupName = sheet.getRange(row, 2).getValue();
      Logger.log("adgroup level" + adGroupName);
     var adgroup = AdWordsApp.shoppingAdGroups()
     .withCondition("Name = '"+ adGroupName +"'")
     .withCondition("CampaignName = '"+ campaignName +"'")
     .get();
      if(adgroup.hasNext()){
        var adGroupDevices = adgroup.next().devices();
        adGroupDevices.setTargetRoas;
     
      }
    }else{
      Logger.log("campaign level: " + campaignName);
     var campaigns = AdWordsApp.shoppingCampaigns().withCondition("CampaignName = '"+ campaignName +"'").get();
      if(campaigns.hasNext()){
        var campaignTargets = campaigns.next().targeting().platforms().get();
      }
      while(campaignTargets.hasNext()){
      var campaignTarget = campaignTargets.next();
      if(campaignTarget.getName()==""){
        campaignTarget.setTargetRoas;
     
      }
      }
    }
    row++;
  }
   
   
}

Google Ads Scripts Forum Advisor

unread,
Feb 17, 2022, 2:41:11 AM2/17/22
to adwords...@googlegroups.com
Hi Kate,

For us to have a closer look, could you please provide the following details via Reply privately to author option?
  • CID
  • Script Name
  • Shareable link of the spreadsheet being used in the script (if any)
In case you encounter an error when using the mentioned option, you can send the requested information on this email (googleadsscr...@google.com) instead, then let us know here once sent.

Regards,
Google Logo
Teejay Wennie
Google Ads Scripts Team
 


ref:_00D1U1174p._5004Q2NS5mh:ref

Kate Bushell

unread,
Feb 17, 2022, 10:17:05 AM2/17/22
to Google Ads Scripts Forum on behalf of adsscripts

Hi, Thank you for your help. Here is the info you need!

CID 882-825-6264

Script Name Hourly ROAS Change Test



Kate Bushell | Director of Paid Search

Secure Ticket Purchase

t : 907.978.9214

e:  kate.b...@secureticketpurchase.com


www.secureticketpurchase.com



The content of this email is confidential and intended for the recipient specified in message only. It is strictly forbidden to share any part of this message with any third party without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.



--
-- You received this message because you are subscribed to the Google Groups AdWords Scripts Forum group. Please do not reply to this email. To post to this group or unsubscribe please visit https://developers.google.com/adwords/scripts/community.
---
You received this message because you are subscribed to a topic in the Google Groups "Google Ads Scripts Forum" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/adwords-scripts/R1F6D3R94nc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to adwords-scrip...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-scripts/vw0H8000000000000000000000000000000000000000000000R7FUOF00ePcDh-T5Tg-5Zm8HY97cbQ%40sfdc.net.

Paula Marmolejo Morazo

unread,
Feb 17, 2022, 11:56:17 AM2/17/22
to Google Ads Scripts Forum
Hi Kate,

I managed to get it working for Shopping, not for search on target ROAS (however I believe it will work if I try on search with conv. value and target ROAS). Please find below:

function main() {
 
const SPREADSHEET_URL = ''YOUR URL;
const shoppingTab = 'Shopping';
const ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
const shopping = ss.getSheetByName(shoppingTab);
const shoppingRange = shopping.getDataRange();
const shoppingValues = shoppingRange.getValues();
console.log (shoppingValues)  
for (let i=1; i<shoppingValues.length;i++){

  const campaignName = shoppingValues[i][0];
 
  const newTRoas = shoppingValues[i][12]
  const campaignIterator =
      AdsApp.shoppingCampaigns()

          .withCondition(`campaign.name = '${campaignName}'`)
          .get();

const campaign = campaignIterator.next();
campaign.bidding().setTargetRoas(newTRoas);
 
 These are the columns I'm using on the spreadsheet, please note that this script only use the "campaign" column and "selector" column. Let me know if it works for you! :)

Capture.JPG

Paula.

Kate Bushell

unread,
Feb 17, 2022, 1:04:30 PM2/17/22
to Paula Marmolejo Morazo via Google Ads Scripts Forum
I am looking to do this on search particularly - with the bid strategy of max conversions with target roas - what would I need to update? Thank you very much for responding!


Kate Bushell | Director of Paid Search

Secure Ticket Purchase

t : 907.978.9214

e:  kate.b...@secureticketpurchase.com


www.secureticketpurchase.com



The content of this email is confidential and intended for the recipient specified in message only. It is strictly forbidden to share any part of this message with any third party without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.


Google Ads Scripts Forum Advisor

unread,
Feb 18, 2022, 4:40:42 AM2/18/22
to adwords...@googlegroups.com
HI Kate,

I could see that you're trying to update ROAS on the campaign level based on the script that you shared. I'm afraid that the tROAS - target return on ad spend at the Campaign level are currently not supported in the Google Ads Scripts. You may only manage BiddingStategies at this entity level. Please see also CampaignBidding and Bidding - Strategy types for your reference.

Paula Marmolejo Morazo

unread,
Feb 22, 2022, 12:28:46 PM2/22/22
to Google Ads Scripts Forum
Hi Kate,

I'm not 100% sure if it will work with max conversions and tROAS (maybe it will with max conv. value and tROAS). If it works, I believe that the only change you'd need to do is call the app.script for search campaigns instead of shopping campaigns (ie. change  AdsApp.shoppingCampaigns() by  AdsApp.Campaigns())

There might be other tweaks to make in there, but that script is a good start for testing different options. Please keep me posted if you manage to do it! I was going to start working on search once I'm done with the shopping one :)

Google Ads Scripts Forum Advisor

unread,
Feb 24, 2022, 1:43:58 AM2/24/22
to adwords...@googlegroups.com

Hello Paula,

Thanks for sharing your insights to Kate on this thread.

However, as previously mentioned by Teejay, in the Google Ads scripts' perspective, you can only set the campaign biddingStrategy using a standard bidding strategy. Please note that specifying portfolio strategies will result in error.

Regards,

Google Logo
Mark Kevin
Google Ads Scripts Team
 


ref:_00D1U1174p._5004Q2NS5mh:ref

Jai Sehgal

unread,
Jan 23, 2023, 2:14:43 AM1/23/23
to Google Ads Scripts Forum
Hi Paula,

Interesting that you got it to work. Do you have the code snippet that will help change the max cpc bid in a bid strategy? 

I'm trying this?

 var strategy = AdsApp.bidding().getStrategies().withIds([strategyId]).get().next();

  // Set the bid modifier to increase the max CPC by 10%
  var bidModifier = 1.1;
  strategy.setMaxCpc(bidModifier)

Google Ads Scripts Forum Advisor

unread,
Jan 23, 2023, 10:38:17 PM1/23/23
to adwords...@googlegroups.com

Hi Jai,

 

Yasmin here from the Google Ads Scripts Team.

 

If you need further assistance on this, kindly provide more context as well as your Google Ads account ID or CID and the name of the script so we're able to investigate the issue you're encountering.

 

Best regards,

 

Google Logo
Yasmin Gabrielle
Google Ads Scripts Team
 


ref:_00D1U1174p._5004Q2NS5mh:ref

Scripted Marketing

unread,
Feb 27, 2023, 7:09:50 PM2/27/23
to Google Ads Scripts Forum
I think that Jai is simply asking if it's possible to change the max CPC of a portfolio bid strategy (like you can with a standard campaign strategy). I have not been able to find the answer myself. Can you clarify?


SM

Google Ads Scripts Forum

unread,
Mar 10, 2023, 4:53:57 AM3/10/23
to Google Ads Scripts Forum
Reposting the last inquiry (https://groups.google.com/g/adwords-scripts/c/R1F6D3R94nc) from the forum as it wasn't routed to our support queue.

Regards,
Google Ads Scripts Team

Jai Sehgal

unread,
Mar 10, 2023, 5:10:39 AM3/10/23
to Google Ads Scripts Forum
@Scripted Marketing Yes exactly that.

Hi Yasmin, what would be the method to change portfolio bid strategy bid ceilings? I've trid multiple but unable to find the right answer.

Thanks,


Google Ads Scripts Forum Advisor

unread,
Mar 10, 2023, 8:48:06 AM3/10/23
to adwords...@googlegroups.com

Hi Jai,

 

If you meant to set the bid ceilings of portfolio bid strategies found in Tools & Settings > Shared library > Bid Strategies > Portfolio strategies, then I'm afraid that it's currently not available via Google Ads Scripts as the AdsApp.​BiddingStrategy methods do not have a method for setting the cpc bid ceiling. You could check the documentation for AdsApp.​CampaignBidding as it's possible to use the method setCpcBidCeiling for campaign level bid strategies.

 

On that note, I can be able to raise a request for this feature in order to check with our internal team. Please do note that we would be unable to provide a definite timeline with regard to it's release and would instead recommend you keep an eye on our Ads Developer Blog for future updates and latest announcements. As an aside, would you be able to provide your Google Ads account ID as well as your use-case which I would be forwarding to our internal team?

 

Best regards,

 

Google Logo Google Ads Scripts Team


ref:_00D1U1174p._5004Q2NS5mh:ref

Scripted Marketing

unread,
Mar 10, 2023, 4:52:36 PM3/10/23
to Google Ads Scripts Forum on behalf of adsscripts
I'm pretty sure both we and Jai would very much like that feature request to be raised :)

Thanks!

--
-- You received this message because you are subscribed to the Google Groups AdWords Scripts Forum group. Please do not reply to this email. To post to this group or unsubscribe please visit https://developers.google.com/adwords/scripts/community.
---
You received this message because you are subscribed to a topic in the Google Groups "Google Ads Scripts Forum" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/adwords-scripts/R1F6D3R94nc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to adwords-scrip...@googlegroups.com.
Message has been deleted

Google Ads Scripts Forum

unread,
Mar 31, 2023, 7:29:53 AM3/31/23
to Google Ads Scripts Forum
Reposting the last inquiry (https://groups.google.com/g/adwords-scripts/c/R1F6D3R94nc) from the forum as it wasn't routed to our support queue.

Regards,
Google Ads Scripts Team

On Wednesday, March 15, 2023 at 7:53:28 PM UTC+8 jai.s...@omd.com wrote:

Yes I agree. Also a way to see SA360 bid strategies in the portfolio bid strategy view.

 

Thanks,

 

 

From: Google Ads Scripts Forum <adwords...@googlegroups.com>
Sent: 10 March 2023 21:52
To: Google Ads Scripts Forum on behalf of adsscripts <adwords...@googlegroups.com>
Subject: Re: How to change Portfolio ROAS at different times of day & day of week

 

CAUTION: This email originated from the Internet. The Original Sender is adwords...@googlegroups.com

This email is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. Dissemination, distribution, or copying of this email or the information herein by anyone other than the intended recipient, or an employee or agent responsible for delivering the message to the intended recipient, is prohibited. If you have received this email in error, please notify the sender immediately.

Reply all
Reply to author
Forward
0 new messages