Reputation: 2372
Sending this PDF as an attachment is resulting in this error: Service invoked too many times for one day: urlfetch.
and I can't see why.
function emailSavePo(poNumber, supplier, unit) {
poNumber = '2B'
supplier = 'ABC'
unit = 'UnitA'
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = ss.getId();
var email = Session.getActiveUser().getEmail();
var pdfName = 'PO' + ' ' + poNumber + ' - ' + supplier + ' - ' + unit;
var sheetId = ss.getSheetByName('PO Sheet').getSheetId();
var url_base = ss.getUrl().replace(/edit$/, '');
var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
+ (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId))
// following parameters are optional...
+ '&size=A4' // paper size
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true' // fit to width, false for actual size
+ '&top_margin=0.50'
+ '&bottom_margin=0.50'
+ '&left_margin=0.50'
+ '&right_margin=0.50'
+ '&sheetnames=true&printtitle=false&pagenumbers=true' //hide optional headers and footers
+ '&gridlines=false' // hide gridlines
+ '&fzr=false'; // do not repeat row headers (frozen rows) on each page
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
}
}
var response = UrlFetchApp.fetch(url_base + url_ext, options);
var blob = response.getBlob().setName(pdfName + '.pdf');
if (email) {
const mailOptions = {
attachments: blob
}
MailApp.sendEmail(
email,
subject + " " + pdfName + "",
"Hello! \n\nHere is a copy of the PO! \n\nBest regards,\nTeam",
mailOptions);
ss.toast('A pdf copy of the PO has been sent to ' + email + '!')
}
}
Logged all parts of it and it all seems OK.
Upvotes: 0
Views: 53
Reputation: 36
It's important to consider other functions that you may have on other spreadsheets. The quota limit for URL fetch calls is 20,000 per day on a personal Gmail account and 100,000 per day on a business Google Workspace account. This quota count towards your Google account, it's possible that other functions on your account are consuming your quota. Try running the script on a different account, if it works that means that something is consuming your quota. You can check the details about quotas for Google services using this link https://developers.google.com/apps-script/guides/services/quotas
Upvotes: 2