Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Stackdriver在驱动器/邮件上导出为.txt或PDF_Google Apps Script_Google Api_Google Drive Api_Google Cloud Stackdriver - Fatal编程技术网

Google apps script Stackdriver在驱动器/邮件上导出为.txt或PDF

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或通过电子邮件发送。

我已经建立了一个脚本,可以从电子表格中读取数据,并根据这些数据发送电子邮件

现在,我还将其设置为通过stackdriver进行一些简单的日志记录

我想做的是将这些日志(在每次执行邮件脚本之后/结束时)导出到
.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()
的本机记录器类不可行吗?