Google表格根据单元格值发送电子邮件每日报告

时间:2018-04-25 05:04:12

标签: javascript google-apps-script google-sheets

有没有办法只显示F列中空白的行并通过电子邮件发送。 试图获取所有没有订购设备的行,并每天通过电子邮件发送。

我正在使用这个使用SheetConverter的脚本。 这是我sheet的样子。这是我email的样子。

function convSheetAndEmail(rng, email, subj)
{
var HTML = SheetConverter.convertRange2html(rng);
MailApp.sendEmail(email, subj, '', {htmlBody : HTML});
}
function doGet()
{
var dataRange = SpreadsheetApp.getActiveSpreadsheet().getDataRange();

var emailUser = '****@gmail.com';

var subject = 'Test Email';

convSheetAndEmail(dataRange, emailUser, subject);
}

编辑 你的意思是这样@Yash,我一直得到错误无法在对象中找到getsheet

function convSheetAndEmail(rng, email, subj)
{
  var HTML = SheetConverter.convertRange2html(rng);
  MailApp.sendEmail(email, subj, '', {htmlBody : HTML});
}
function doGet()
{
   var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

  for (i in data) {
    if (data[i][5] === ""){

  var labels=new Array;
    labels.push([data[i][0], data[i][1], data[i][2], data[i][3], data[i][4], data[i][5], data[i][6], data[i][7]]);  

  var emailUser = '****@gmail.com';

  var subject = 'Test Email';

  convSheetAndEmail(labels, emailUser, subject);
}
}
}

2 个答案:

答案 0 :(得分:0)

最简单的方法,也就是我所知道的方法,是: 使用

获取数组中的值
var data = SpreadsheetApp.getActiveSpreadsheet().getDataRange().getValues();

然后制作一个循环

for (i in data) {

在此循环中检查订购的商品(data[i][5])是否等于您正在寻找的null。如果是,则将该行推送到数组

var labels=new Array;
label.push([data[i][0], data[i][1], data[i][2], data[i][3], data[i][4], data[i][5], data[i][6], data[i][7]]);

然后将所有数据放在此数组中,您可以使用for循环填充带有标签的窗格Ui。

替代方式是使用"查询" getRange()上直接为您提供过滤数据的公式

最后你的脚本如下: -

function convSheetAndEmail(rng, email, subj)
{
    var HTML = SheetConverter.convertRange2html(rng);
    MailApp.sendEmail(email, subj, '', {htmlBody : HTML});
}
function doGet()
{
    var data = SpreadsheetApp.getActiveSpreadsheet().getDataRange().getValues();
    var labels=new Array;
    for (i in data) {
        if (data[i][5] === ""){
            labels.push([data[i][0], data[i][1], data[i][2], data[i][3], data[i][4], data[i][5], data[i][6], data[i][7]]);  
        }
    }
    var emailUser = '****@gmail.com';
    var subject = 'Test Email';
    convSheetAndEmail(labels, emailUser, subject);
}

答案 1 :(得分:0)

不知道你在哪里面对这个问题。检查此代码,它会对您有所帮助。 首先对F列的值进行排序,然后从A to H中选择未填充的单元格。按降序排序F列,然后按升序排序第一列(仅按顺序获取范围)。

function convSheetAndEmail(rng, email, subj)
{
  var HTML = SheetConverter.convertRange2html(rng);
  MailApp.sendEmail(email, subj, '', {htmlBody : HTML});
}
function lastValueOfColumn(column) {
  var iLastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
  var aValues = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + iLastRow).getValues();
  for (; aValues[iLastRow - 1] == "" && iLastRow > 0; iLastRow--) {}
  return iLastRow;
}
function doGet()
{
  var iLastRowOfH = lastValueOfColumn('H');
  var ss = SpreadsheetApp.getActiveSpreadsheet().getRange('A1:H' + iLastRowOfH).sort([{column: 6, ascending: false}, {column: 1, ascending: true}]);
  var iLastRowOfF = lastValueOfColumn('F') + 1;
  var data = SpreadsheetApp.getActiveSpreadsheet().getRange('A' + iLastRowOfF + ':H' + iLastRowOfH);
  var emailUser = '****@gmail.com';
  var subject = 'Test Email';
  convSheetAndEmail(data, emailUser, subject);
}