[英]Retrieving the output of a Google Apps script to local computer
我正在运行Google Apps脚本(基于Gmail数据),并且想将Javascript中的某些数据保存到本地计算机。 如何保存/下载使用Javascript计算的某些数据:
到本地文件?
我发现的是:
var addresses = [];
var threads = GmailApp.search("label:mylabel", 0, 10);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
addresses.push(messages[j].getFrom());
}
}
Logger.log(addresses);
但是Logger.log(...)
对于将此数据保存到本地计算机不是很有用。
我建议将此作为另一个答案。
如果我从Google Apps脚本和Google云端硬盘获取数据,我认为Web Apps可以用于这种情况。 例如,它作为触发器run=ok
从Google检索数据,可以使用以下示例脚本。
function doGet(e) {
if (e.parameter.run == "ok") {
// do something
var result = "sample data"
return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.TEXT);
}
return
}
您可以使用本地PC上的curl检索result
数据,如下所示。 该URL是Web Apps URL。
curl -L https://script.google.com/macros/s/#####/exec?run=ok
sample data
Google Apps脚本无法将任何内容直接保存到您的计算机中。 但是它可以将数据保存到Google Spreadsheet,然后可以下载。
您可能要使用现有的电子表格,也可以创建一个新的电子表格。 因此,逻辑开始于
var ss = SpreadsheetApp.create("Output"); // new spreadsheet
要么
var ss = SpreadsheetApp.openByUrl(url); // existing spreadsheet
无论哪种方式,假设您都希望将地址列表存储在此电子表格的第一张工作表的A列中。 那会是
var sheet = ss.getSheets()[0];
var range = sheet.getRange(1, 1, addresses.length, 1);
var data = addresses.map(function(x) {return [x];});
range.setValues(data);
data
的中间步骤是将一维数组addresses
转换为二维数组[[addr1], [addr2], ...]
-这是在Google表格中表示值的方式。
昨晚我在调试程序时遇到了一些麻烦,我希望能够在计算机上查看新版UltraEdit中的json,因此这就是将数据从Google脚本获取到计算机的方式。
function getText(obj)
{
var presentationId=getPresentationId();
var data=Slides.Presentations.Pages.get(obj.presId, obj.pageId);
myUtilities.saveFile(data)
for (var i=0;i<data.pageElements.length;i++)
{
if(data.pageElements[i].shape && data.pageElements[i].shape.text && data.pageElements[i].shape.text.textElements.length)
{
for(var j=0;j<data.pageElements[i].shape.text.textElements.length;j++)
{
if(data.pageElements[i].shape.text.textElements[j].textRun)
{
var text=data.pageElements[i].shape.text.textElements[j].textRun.content;
}
}
}
}
return text;
}
myUtilities.saveFile(data)
是我编写的实用程序库的一部分,该实用程序库使将各种数据轻松存储在ascii文件中成为可能。 只需几分钟,文件就会自动同步到我的计算机Google云端硬盘中,我使用UltraEdit打开了文件并开始对其进行分析。 没什么了不起的。 仅仅利用现有功能就不会花哨的脚步工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.