Google apps script Stackdriver在驱动器/邮件上导出为.txt或PDF
我已经建立了一个脚本,可以从电子表格中读取数据,并根据这些数据发送电子邮件 现在,我还将其设置为通过stackdriver进行一些简单的日志记录 我想做的是将这些日志(在每次执行邮件脚本之后/结束时)导出到Google apps script Stackdriver在驱动器/邮件上导出为.txt或PDF,google-apps-script,google-api,google-drive-api,google-cloud-stackdriver,Google Apps Script,Google Api,Google Drive Api,Google Cloud Stackdriver,我已经建立了一个脚本,可以从电子表格中读取数据,并根据这些数据发送电子邮件 现在,我还将其设置为通过stackdriver进行一些简单的日志记录 我想做的是将这些日志(在每次执行邮件脚本之后/结束时)导出到.txt或.pdf文件中,然后保存到特定的Google Drive文件夹或通过邮件发送 不幸的是,我似乎无法找到如何做到这一点,或者它是否可行 如果这是你想做的,那么就没有办法编辑谷歌文档文件。您必须在本地创建.txt或.pdf文件,然后将文件上载到Google drive或通过电子邮件发送。
.txt
或.pdf
文件中,然后保存到特定的Google Drive文件夹或通过邮件发送
不幸的是,我似乎无法找到如何做到这一点,或者它是否可行 如果这是你想做的,那么就没有办法编辑谷歌文档文件。您必须在本地创建.txt或.pdf文件,然后将文件上载到Google drive或通过电子邮件发送。从技术上讲,如果你上传一个.txt文件,我认为谷歌硬盘将允许你将其导出为pdf格式,但我还没有尝试过谷歌硬盘的新版本
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 Drive通过电子邮件发送文件。您必须在本地下载文件,然后添加并发送电子邮件。Stackdriver有一个错误报告API。API具有REST功能,这意味着您可以使用
UrlFetchApp.fetch(url)
从应用程序脚本调用它,其中url
是获取错误报告信息所需的url。Stackdriver API的基本url为:https://clouderrorreporting.googleapis.com
API必须启用
API可以使用多种方法
您可能需要的方法是list
方法,它需要url:
https://clouderrorreporting.googleapis.com/v1beta1/{projectName=projects/*}/events
其中,projectName
参数必须是Google云平台项目ID
请参阅列表中的文档,网址为:
该HTTPS请求的返回值(如果成功)是具有以下结构和数据的“响应体”:
{
"errorEvents": [
{
object (ErrorEvent)
}
],
"nextPageToken": string,
"timeRangeBegin": string
}
{
"eventTime": string,
"serviceContext": {
object (ServiceContext)
},
"message": string,
"context": {
object (ErrorContext)
}
}
ErrorEvent是一个JSON对象,具有以下结构和数据:
{
"errorEvents": [
{
object (ErrorEvent)
}
],
"nextPageToken": string,
"timeRangeBegin": string
}
{
"eventTime": string,
"serviceContext": {
object (ServiceContext)
},
"message": string,
"context": {
object (ErrorContext)
}
}
因此,如果您想从Stackdriver发送包含错误数据的电子邮件,它不会直接从Stackdriver发送,您需要从应用程序脚本向Stackdriver发出请求,获取错误信息,然后从应用程序脚本发送电子邮件
当然,您可以拥有自己的错误处理系统,该系统使用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,也没有测试过这段代码。如果有人使用它,并且有信息或发现错误,请发表评论。您好,谢谢您的回复。我忘记提到的是:脚本(apps脚本)使用GmailApp.sendmail命令发送邮件。我不知道我们对解释的看法是否一致,但可以肯定的是:我想做的是获取日志文件/日志行,并将其导出到一个文件(.txt of.pdf)。然后,该文件应该保存到Google Drive,或者通过MailApp发送到某个邮件地址。发送文件不是问题,因为当前脚本已经从驱动器中获取文件并将其作为附件添加。唯一的问题是如何将日志导出到文件?对于我的knowlage,只有当您有指向它的url链接UrlFetchApp.fetch(url.getContentText())时,应用程序脚本才能读取该文件;这个答案里有不好的信息Drive.Files.export()
将不接受对象作为参数Drive.Files.export(fileId,mimeType)
有两个参数。使用支持getLogs()
的本机记录器类不可行吗?