簡體   English   中英

TypeError:無法從未定義中讀取屬性“值”。 (第9行,“代碼”文件)

[英]TypeError: Cannot read property “values” from undefined. (line 9, file “Code”)

 function onInstall(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Form'); var Timestamp = e.values[0]; var Load = e.values[1]; var Email = e.values[2]; var Location = e.values[3]; var template = HtmlService.createHtmlOutputFromFile("notification"); template.Location = Location; MailApp.sendEmail(Email, "subject", "", { HtmlBody: template.evaluate().getContent() }); } 

我已經寫了這個小程序。 每次用戶編輯電子表格。 它應該運行觸發器並向列中提到的電子郵件地址發送電子郵件。 我的編碼不好。 但是請幫我解決這個問題,我已經嘗試了很久了。

這是公共電子表格電子表格的鏈接

 function() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetName('Form'); } function onEdit(e) { var Timestamp = e.values[0]; var Load = e.values[1]; var Email = e.values[2]; var Location = e.values[3]; MailApp.sendEmail(Email, "check In Call", "location"); } 

2件事:

  1. 如果嘗試測試從腳本編輯器運行的代碼,它將無法正常工作,並且您會收到錯誤消息,因為沒有為e分配任何值(因為實際上沒有事件)。
  2. 簡單onEdit功能不能夠發送電子郵件,看文檔中關於事件和觸發這里

您應該在編輯(實時)時測試代碼,並設置可安裝的onEdit觸發器(腳本編輯器菜單/資源/此項目觸發器/添加新觸發器)

您也可以使用代碼“模擬”事件,有關詳細信息,請參見Mogsdad的答案

有很多原因導致此腳本無法運行。 而是修復錯誤,我從頭開始為您編寫了代碼段,然后我將嘗試解釋為什么當前不能逐行運行。

首先,這是一些工作代碼:

function onEdit(e) {
  var activateSheet = SpreadsheetApp.getActiveSpreadsheet();
  SpreadsheetApp.setActiveSheet(activateSheet.getSheetByName('Form'));
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = e.range.getRowIndex();//Gets the row the change was made to.  

  var timestamp = sheet.getRange(row, 1).getValues(); //Gets the email
  var load = sheet.getRange(row, 2).getValues(); //Gets the email
  var email = sheet.getRange(row, 3).getValues(); //Gets the email
  var location = sheet.getRange(row, 4).getValues(); //Gets the email

  MailApp.sendEmail(email, "Check In Call", location);

}

“ Load”和“ Timestamp”字段似乎並不需要您想要的內容,但是我還是把它們留了下來,因為也許您需要它們。

以下是對您不起作用的事情的列表:

  1. 調用工作表的第一個函數在任何階段都沒有運行,因為沒有觸發器,它也不會將激活的工作表傳遞給您的“ onEdit”功能。
  2. “ getSheetName()”用於檢索工作表的名稱,而不是按名稱獲取工作表。 您實際上正在尋找的方法是:“ getSheetByName(name)”。
  3. 僅當編輯的內容是單個單元格 (基於電子表格的可能性不大)時, e.value才可用
  4. 即使e.value不是單個單元格,也不能正確使用它,但這不是此問題的主題。

附帶說明:我從語法錯誤中感覺到您不熟悉Javascript。 在嘗試使用Google Apps腳本進行任何操作之前,我建議您先熟悉Javascript,以避免嘗試完成簡單操作時浪費很多時間和沮喪的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM