Hi All.
I took Flexible Budget Script as an example and made some changes in order for the script to let me change Shared Budgets. Since a change in daily budget for a Campaign with a Shared Budget changes all campaigns' Daily Budgets under it, I was able to create a script to do so.
Here it is (Just make a copy of the Spreadsheet I'm using and change the Account ID's and Campaign Names you want to change):
function main() {
var COLUMN = {
accountId: 2,
campaignName: 3,
dailyBudget: 4
};
var CONFIG_START_ROW = 5;
// Core logic for calculating and setting campaign daily budget
var sheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL).getSheets()[0];
var endRow = sheet.getLastRow();
var mccAccount = AdWordsApp.currentAccount();
sheet.getRange('D2').setValue(mccAccount.getCustomerId());
Logger.log(mccAccount.getCustomerId())
for (var i = CONFIG_START_ROW; i <= endRow; i++) {
Logger.log('Processing row %s', i);
var accountId = sheet.getRange(i, COLUMN.accountId).getValue();
var campaignName = sheet.getRange(i, COLUMN.campaignName).getValue();
var dailyBudget = sheet.getRange(i, COLUMN.dailyBudget).getValue();
var accountIter = MccApp.accounts().withIds([accountId]).get();
if (!accountIter.hasNext()) {
resultCell.setValue('Unknown account');
continue;
}
var account = accountIter.next();
MccApp.select(account);
var campaignIter = AdWordsApp.campaigns()
.withCondition('CampaignName = "' + campaignName + '"')
.get();
if (!campaignIter.hasNext()) {
resultCell.setValue('Unknown campaign');
continue;
}
var campaign = campaignIter.next();
var newBudget = (dailyBudget);
campaign.getBudget().setAmount(newBudget);