我有一個功能,可以把電子表格資料從我的gmail匯入到Google Sheets。以前,電子表格資料只有6列可以匯入。現在,做了一些新的改動,增加了第7列。在這個變化實施后,我的函式不再作業,Google Sheets拋出了這個錯誤。我可以得到一些幫助嗎?
所以,在我看來,預期的功能在我看來是正確的。跳過前3行(netdata),取下面的所有內容。會不會是 1, 1?
錯誤:
TypeError。不能讀取屬性'getRange' of null。
我的匯入函式:
function importCSVFromGmail() {
var sheetName = "SHEET_NAME"; // sheet標簽的名稱。
var threads = GmailApp. search("from:EMAIL HERE label:LABEL HERE"); // "from:收件人email here label:name of your filter/label here"。
var messages = threads[0].getMessages() 。
var message = messages[messages.length - 1] 。
var attachment = message.getAttachments()[0]; // [0] 將默認只尋找一個附件。如果有兩個以上的附件,則增加數值。 例如: [1] , [2] 。
var data = [];
if (attachment.getContentType() == MimeType.CSV) { //這將首先尋找一個CSV檔案型別。
data = Utilities.parseCsv(attachment.getDataAsString(), " ,")。
} else if (attachment.getContentType() == MIMEType. MICROSOFT_EXCEL || attachment.getContentType() == MIMEType.MICROSOFT_EXCEL_LEGACY) { // If attachment is an xls, this line will look at the content to determine and convert accordingly..
var tempFile = Drive.Files.insert({title。"temp", mimeType: MimeType.GOOGLE_SHEETS}, attachment).id。
data = SpreadsheetApp.openById(tempFile)。 getSheets()[0].getDataRange().getValues()。
Drive.Files.trash(tempFile)。
}
if (data.length > 0) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName( sheetName)。
var netdata = data.slice(3); //這將跳過從頂部開始的行數。
sheet.getRange(sheet.getLastRow() 1, 1, netdata. length, netdata[0].length).setValues(netdata )。
}
我認為問題出在這里:
sheet.getRange(sheet. getLastRow() 1, 1, netdata. length, netdata[0].length).setValues(netdata )。
uj5u.com熱心網友回復:
錯誤資訊表明,問題出在sheet變數為空。當電子表格中沒有名為SHEET_NAME的作業表時就會發生這種情況。
為了解決這個錯誤,用你想讓函式作業的作業表的名字替換SHEET_NAME。檢查作業表名稱中是否有前導和尾部的空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/319345.html
標籤:
上一篇:使用遞回法合并兩個串列
下一篇:如何在谷歌應用腳本中使用靜態方法
