我正在为Google页面创建一个注释,我所在的高中的志愿者俱乐部可以用它来记录他们成员的志愿者时间。大部分代码都已经完成并且工作得很好,我目前正在开发一个系统,它将向一个成员发送一个电子表格,列出他们记录的所有志愿活动。我有气体创建一个单独的电子表格,然后发送一封电子邮件与该单独的电子表格附加在PDF。当收到电子邮件时,PDF是空的,除了页面左上角的单数空单元格外。
我对汽油很陌生,但能够很容易地掌握内容。我只尝试过一种发送电子表格的方法,即使用.getAs(MimeType.PDF)。当我将"PDF“改为"GOOGLE_SHEETS”时,GAS返回了错误:"Blob对象必须具有此操作的非空数据。“我不完全确定Blob对象是什么,也没有发现任何网站或视频已经完全解释了它,所以我不知道如何去排除这个错误。
我想我在抓取文件时遇到了问题,因为它要么发送一个空PDF,要么返回一个错误,声称它需要“非空数据”。
function TigerMail()
{
var Drive = DriveApp;
var app = SpreadsheetApp;
var LOOKUP = app.getActiveSpreadsheet().getSheetByName("Student
Lookup");
var Name = LOOKUP.getRange("E1").getValue();
Name = Name + "'s Hours";
//app.openById(Name+"'s Hours");
var HOURS = app.create(Name);
var ESheet = HOURS.getSheets()[0];
var ROW = LOOKUP.getLastRow();
var arr = LOOKUP.getRange("D1:J"+ROW).getValues();
var cell = ESheet.getRange("A1:G"+ROW);
cell.setValues(arr);
////////////////////////////////////////////////////
var LOOKUP = app.getActiveSpreadsheet().getSheetByName("Student
Lookup");
var cell = LOOKUP.getRange("D1");
var Addr = cell.getValue();
var ROW = LOOKUP.getLastRow();
var file = Drive.getFilesByName(Name);
var file = file.next();
var FORMAT = file.getAs(MimeType.GOOGLE_SHEETS);
TigerMail.sendEmail(Addr, "Hours", "Attached is a list of all of the
events you have volunteered at:", {attachments: [FORMAT]} );
}
最后四行是错误发生的地方。我相信我误解了.next()和.getFilesByName()的工作方式。
(注释行上方:创建小时电子表格)
(注释行下方:抓取电子表格并将其附加到电子邮件中)
下面是到Google工作表的链接:https://docs.google.com/spreadsheets/d/1qlUfTWaj-VyBD2M45F63BtHaqF0UOVkwi04XwZFJ4vg/edit?usp=sharing
发布于 2019-06-25 22:05:40
如果我的理解是正确的,这次修改怎么样?请把这看作是几个答案中的一个。
修改要点:
Drive.getFilesByName(Name)
,Drive
中没有getFilesByName()
的方法。HOURS
of var HOURS = app.create(Name)
。
var FORMAT = file.getAs(MimeType.GOOGLE_SHEETS)
,在Google中,当blob被检索时,blob会自动转换为PDF格式。这也可以用于您的情况。SpreadsheetApp.flush()
。当以上要点反映到您的脚本中时,如下所示。
修改脚本:
请按以下方式修改。
发自:
var file = Drive.getFilesByName(Name);
var file = file.next();
var FORMAT = file.getAs(MimeType.GOOGLE_SHEETS);
至:
SpreadsheetApp.flush();
var FORMAT = HOURS.getBlob();
注意:
var ROW = LOOKUP.getLastRow()
。参考文献:
如果我误解了你的问题,而这不是你想要的结果,我道歉。
https://stackoverflow.com/questions/56764928
复制相似问题