簡體   English   中英

如何基於單個單元格編輯(Google Script / GAS)通過電子郵件發送電子表格中的整行數據

[英]How to send whole row of data in my spreadsheet via email based on single cell edit (Google Script / GAS)

我們已經設置了一個工作流電子表格,其中包含客戶名稱、工作詳細信息等工作信息。如果您從該行最后一列的下拉菜單中選擇“完成”,我有一個漂亮的腳本可以隱藏整行。

我現在要做的是發送一封電子郵件,其中包含我們隱藏的行中的所有數據。

更新:這是我到目前為止的代碼:

/** 
* TITLE:
*     Hide a row if a value is inputted then send an email 
*/

//**GLOBALS**
// Sheet the data is on.
var SHEET = "Live Jobs";
// The value that will cause the row to hide. 
var VALUE = "Complete";
// The column we will be using 
var COLUMN_NUMBER = 22

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();

  //Ensure on correct sheet.
  if(SHEET == activeSheet.getName()){
    var cell = ss.getActiveCell()
    var cellValue = cell.getValue();

    //Ensure we are looking at the correct column.
    if(cell.getColumn() == COLUMN_NUMBER){
      //If the cell matched the value we require,hide the row. 
      if(cellValue == VALUE){
        activeSheet.hideRow(cell)
        SendEmail(e);
      };
    };
  };
}



/**
 * Sends emails with data from the current spreadsheet.
 */
function SendEmail(e) {
  // Fetch the email address
var correctSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Live Jobs');
var emailRange = correctSheet.getRange('Z1');  
var emailAddress = emailRange.getValue();

  var sheet = SpreadsheetApp.getActiveSheet();

var cell = sheet.getActiveCell()
var rowValue = cell.getRow();  

  var startRow = rowValue; // First row of data to process
  var numRows = 2; // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, 1, 5);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i in data) {
    var row = data[i];
    var message = row; // Second column
    var subject = 'Sending emails from a Spreadsheet';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

現在,隱藏行有效,如果我從 Google Script 編輯器運行它,電子郵件功能也有效,但由於某種原因,當我選擇“完成”時電子郵件不會觸發,但它在昨天工作!!!

有小費嗎?

嘗試這個:

您可能無法使用簡單的觸發器來執行此操作,因為發送電子郵件需要授權。

var SHEET = "Live Jobs";
var VALUE = "Complete";
var COLUMN_NUMBER = 22
function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()==SHEET){
    if(e.range.columnStart==COLUMN_NUMBER && e.value==VALUE){
        sh.hideRow(e.range.rowStart);
        SendEmail(e);
      }
    }
  }
}


function SendEmail(e) {
  MailApp.sendEmail(e.range.getSheet().getRange('Z1').getValue(), 'Invoice Job Alert', e.range.getSheet(e.range.rowStart,1,1,e.range.getSheet().getLastColumn()).getValues()[0].join(','));
}

暫無
暫無

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

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