Hello there,
I would appreciate your help on this. I am trying to receive a CSV export, however the MailApp does not seem to be executing correctly. Is there something I am missing or is there something wrong with the MailApp?:
Code:
function main() {
function sendCampaignDataAsEmail() {
var csvContent = "Account,Campaign,Start Date,End Date,Budget," +
"Days Spent,Days Remaining,Days Total,Spent,Average," +
"Yesterday,Target,Difference,Pacing,Yest. %,Updated %," +
"Budget %,Remaining Budget\n";
var campaignIterator = AdsApp.campaigns().get();
var today = new Date();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
var stats = campaign.getStatsFor("ALL_TIME");
var campaignStartDate = new Date(campaign.getStartDate());
var campaignEndDate = campaign.getEndDate() ? new Date(campaign.getEndDate()) : new Date();
var daysTotal = Math.ceil((campaignEndDate - campaignStartDate) / (1000 * 60 * 60 * 24));
var daysSpent = Math.ceil((today - campaignStartDate) / (1000 * 60 * 60 * 24));
var daysRemaining = daysTotal - daysSpent;
var budget = campaign.getBudget().getAmount();
var spent = stats.getCost();
var average = spent / daysSpent;
var yesterdayStats = campaign.getStatsFor("YESTERDAY");
var yesterdaySpend = yesterdayStats.getCost();
var target = budget / daysTotal;
var difference = budget - spent;
var pacing = spent / budget;
var yestPercent = (yesterdaySpend / budget) * 100;
var updatedPercent = (spent / budget) * 100;
var remainingBudget = budget - spent;
var line = [
'"' + campaign.getAccount().getName() + '"',
'"' + campaign.getName() + '"',
'"' + campaignStartDate.toISOString().slice(0, 10) + '"',
'"' + campaignEndDate.toISOString().slice(0, 10) + '"',
budget.toFixed(2), daysSpent, daysRemaining, daysTotal, spent.toFixed(2),
average.toFixed(2), yesterdaySpend.toFixed(2), target.toFixed(2),
difference.toFixed(2), pacing.toFixed(4),
yestPercent.toFixed(2) + "%", updatedPercent.toFixed(2) + "%",
updatedPercent.toFixed(2) + "%", remainingBudget.toFixed(2)
].join(",");
csvContent += line + "\n";
}
// Email parameters
var subject = "Example report Spain";
var recipient = "
test.e...@test.com";
var body = "Please find the attached report.";
var attachments = [Utilities.newBlob(csvContent, "text/csv", "Test_example.csv")];
// Email with the attachment
MailApp.sendEmail({
to: recipient,
subject: subject,
body: body,
attachments: attachments
});
}}
After multiple tries and edits, I tried the simplest MailApp function and also did only receive a mail once out of 7 tries. function sendEmail(recipient, subject, body) {
MailApp.sendEmail("
Test...@gmail.com",
"test reports",
"Where are the test reports?");
}}
Thank you for any support and kind regards,
Morris