我一直在做这个谷歌广告脚本,通过电子邮件向我发送csv。
它查询广告词api中的数据,将其写入电子表格,从电子表格中读取数据,遍历行以创建csv字符串,创建blob并发送电子邮件。
它写入/读取电子表格的原因是为了获得正确格式的数据。我不确定还有更好的办法。
问题是它不会创建blob。它失败,并出现以下错误:
Exception: Unexpected error while getting the method or property newBlob on object Utilities. (line 53)
我在网上查了一下,找不到太多关于这个错误的信息。我已经尝试删除newBlob语句上的参数,发送原始csv字符串等。似乎什么都不起作用,我不明白创建blob失败的原因。
const SS_ID = '1_super_secret_id_Q';
const SS_NAME = 'GCLID Report';
const SHEET_NAME = 'DURING YESTERDAY'
const EMAIL_TO = 'c_super_secret_email_g'
const MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
function collect_report() {
return AdsApp.report(
'SELECT ' +
' click_view.gclid, ' +
' segments.date, ' +
' customer.id, ' +
' ad_group.id, ' +
' campaign.id ' +
'FROM click_view ' +
'WHERE segments.date DURING YESTERDAY'
);
}
function calculate_yesterday() {
var now = new Date();
var yesterday = new Date(now.getTime() - MILLIS_PER_DAY);
var timeZone = AdsApp.currentAccount().getTimeZone();
var yesterday_str = Utilities.formatDate(yesterday, timeZone, 'yyyy-MM-dd');
return yesterday_str;
}
function convert_sheet_to_csv(sheet) {
var csv_data = '';
// This represents ALL the data.
var range = sheet.getDataRange();
var values = range.getValues();
// This logs the spreadsheet in CSV format.
for (let i = 0; i < values.length; i++) {
csv_data += (values[i].join(',')) + '\r\n';
}
}
function main() {
var report = collect_report();
var spreadsheet = SpreadsheetApp.openById(SS_ID);
var sheet = spreadsheet.getSheetByName(SHEET_NAME);
sheet.clearContents();
report.exportToSheet(sheet);
var mime = 'text/plain'
var yesterday_str = calculate_yesterday();
var filename = 'gclid_report.csv';
var csv_data = convert_sheet_to_csv(sheet);
var blob = Utilities.newBlob(csv_data, mime, filename);
var email_subject = 'Your Google Ads Report Is Ready: GCLID Report';
var email_body = 'Attached is the ' + filename;
MailApp.sendEmail(
EMAIL_TO,
email_subject,
email_body,
{
name: 'Automatic Emailer Script',
attachments: [blob]
}
);
}
main();