2016-07-11 167 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