2016-07-11 118 views
1

下面的代码无法正常工作,给了以下错误:在脚本中直接提供ID附加谷歌文档的链接从谷歌电子表格中的脚本读取电子邮件自动

TypeError: Cannot find function getFileByID in object Drive.

我想先行先试:

var atta = DriveApp.getFileByID('1XD...c'); //ID is Folder and Google Doc ID I      want to attach 

MailApp.sendEmail(emailto, subject, message, { 
    cc: emailcc, 
    attachments:[atta] 
}); 

最后,我想从谷歌电子表格链接阅读:

var range = active_actions.getRange(i+1,16) //active_actions is the spreadsheet and i+1,16 is the cell with the link 

var link = range.getFormula(); 
var atta = DriveApp.getFileByID(link); 
MailApp.sendEmail(emailto, subject, message, { 
    cc: emailcc, 
    attachments:[atta] 
}); 

回答

1

这并不难。 Google文件/电子表格等。不能作为电子邮件中的附件。这是因为它实际上不是一个“物理文件”。它只存在于云端。相反,把URL放在电子邮件中,它会给接收器一个底部的小盒子,Doc看起来像一个附件。

这并不完美,但它已经足够好了。有关详细信息,你可以看到这个问题的请求或谷歌的App脚本问题页面:

https://code.google.com/p/google-apps-script-issues/issues/detail?id=585&q=attachment%20types&sort=-stars&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner

EDIT(为了解释数据SS获取):

获取数据了一系列的对象,(文本,数字等),你应该使用这种格式。

var range = getRange(); 
var rangeData; 
var cellValue; 

while (range.hasNext()) { 
    rangeData = range.next(); 
    cellValue = rangeData.getValue(); 
} 

如果你是一个累加器变量,你可以在一个列表/字符串/ etc中得到每一位数据。

现在您已经掌握了自己的数据,您可以通过电子邮件发送邮件或使用其他任何方式。

+0

是的,谢谢你,这将工作。现在,我试图读取链接:var range = active_actions.getRange(i + 1,16) var link = range.getFormula()但没有返回。另外,是否必须将实际链接放在单元格中,或者我可以使用文本 –

+0

现在,我试图使用 –

+0

您可以使用纯文本,因为gmail应自动将任何www.sathue.ending解释为超链接。我认为你有另一个问题(很难说清楚),就是你试图从复数中得到一个单一的对象。 .getRange()得到一个范围,一组单元格。即使它只是一个单元格,您仍然需要遍历该范围的内容才能获取其内容。 – EvSunWoodard