我已经设置了一个脚本,该脚本从电子表格中读取数据并根据此数据发送电子邮件。
现在,我还设置了通过stackdriver进行一些简单的日志记录。
我想要做的是将这些日志(在每次执行邮件脚本之后/之后)导出到.txt
或.pdf
文件,然后保存到特定的Google云端硬盘文件夹或通过邮件发送。
不幸的是,我似乎无法找到如何做到这一点,或者它是否可行?
答案 0 :(得分:1)
如果您正在考虑这样做,则无法编辑Google文档文件。您必须在本地创建.txt或.pdf文件,然后将文件上传到Google云端硬盘或将其作为电子邮件发送。从技术上讲,如果您将文件上传为.txt,我认为Google驱动器允许您将其导出为pdf,但我还没有尝试使用新版Google驱动器。
var fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
var dest = fs.createWriteStream('/tmp/resume.pdf');
drive.files.export({
fileId: fileId,
mimeType: 'application/pdf'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
我也不认为您可以直接从Google云端硬盘发送文件,您必须在本地下载文件,然后添加发送电子邮件。
答案 1 :(得分:0)
Stackdriver有一个错误报告API。 Documentation for Stackdriver API具有REST功能,这意味着您可以使用UrlFetchApp.fetch(url)
从Apps脚本中调用它,其中url
是获取错误报告信息所需的URL。 Stackdriver API的基本URL为:https://clouderrorreporting.googleapis.com
必须启用该API。
API可以使用多种方法。
您可能需要的方法是list
方法,该方法需要url:
https://clouderrorreporting.googleapis.com/v1beta1/{projectName=projects/*}/events
其中projectName
参数必须是Google Cloud Platform项目ID。
list
的文档
该HTTPS请求的返回值,如果成功,是具有以下结构和数据的“响应正文”:
{
"errorEvents": [
{
object (ErrorEvent)
}
],
"nextPageToken": string,
"timeRangeBegin": string
}
ErrorEvent是具有以下结构和数据的JSON对象:
{
"eventTime": string,
"serviceContext": {
object (ServiceContext)
},
"message": string,
"context": {
object (ErrorContext)
}
}
因此,如果您想从Stackdriver发送包含错误数据的电子邮件,则不会直接从Stackdriver发送,您需要从Apps Script向Stackdriver发出请求,获取错误信息,然后发送电子邮件来自Apps脚本。
当然,您可以拥有自己的错误处理系统,使用UrlFetchApp.fetch(url);将错误信息记录到某个外部目标(例如,电子表格或数据库)中。
要向Stackdriver API发送请求,您需要以下代码:
var projectID = "Enter project ID";
var url = 'https://clouderrorreporting.googleapis.com/v1beta1/' + projectID
+ '/events';
var tkn = ScriptApp.getOAuthToken();
var options = {};
options.headers = {Authorization: 'Bearer ' + tkn}
options.muteHttpExceptions = true;
var rtrnObj = UrlFetchApp.fetch(url,options);
Logger.log(rtrnObj.getContentText())
我没有使用此API,也没有测试此代码。如果有人使用它,并且有信息或发现错误,请发表评论。