在Google Apps脚本中的不同工作表上设置值

时间:2012-07-19 21:41:10

标签: google-apps-script

我想对"Sending emails from a Spreadsheet" tutorial on the Google Developers page进行修改。

我想完全按照他们的方式行事,除非每次发送电子邮件时都标记每行中的单元格,我想在SEPARATE表单上标记。

因此,在“NeedReminders”工作表上,我的脚本在A列中查找应向其发送电子邮件的成员的电子邮件地址(然后变为“emailAddress”)。它将电子邮件发送到该地址。

然后 - 这就是我需要帮助的地方 - 我希望脚本转到“Master”表,找到emailAddress在X列的行,并且 - 在同一行 - 设置值专栏BT。

应该不难。我不一定知道如何“找到columm X等于emailAddress的行,并将BT的值设置为今天的日期”部分。

谁可以提供帮助?提前谢谢!

到目前为止,这是我的代码(我总是很尴尬地展示我的代码,因为我确定它是可怕的少年,所以要温柔,请!):

function sendDuesReminder() {
  var sheet = SpreadsheetApp.openById('___').getSheetByName('NeedReminders');
  var startRow = 4; // There are a bunch of headers and other nonsense.
  var valueSheet = SpreadsheetApp.openById('___').getSheetByName('Master');

  // Determine how many rows to process
  var rowRange = sheet.getRange(3,4); // On my sheet, cell D3 counts how many members are on the list of people who need a reminder e-mail.
  var rowData = rowRange.getValue();
  // End Determine how many rows to process

  // Send e-mail
  var dataRange = sheet.getRange(startRow, 1, rowData, 2);
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    // var emailAddress = row[0]; //Column A: E-mail Address
    var name = row[1]; //Column B: First Name
    var subject = "Reminder About Dues for Newcomers & Neighbors";
    MailApp.sendEmail("matt@twodoebs.com", subject, "Hi, " + name + ". It's been some time since we received your online registration for Newcomers & Neighbors. But we don't seem to have received your dues payment, yet. So we wanted to drop you a quick line and remind you about it." + "\n\n" + "If you think we should have received your payment by now or there's some kind of a mistake, please let us know by responding to this message." + "\n\n" + "Otherwise, please send a check for __ made payable to ___ to:" + "\n\n" + "___" + "\n" + "___" + "\n" + "___" + "\n" + "___" + "\n\n" + "Thanks! Please don't hesitate to reach out if you have any questions." + "\n" + "___" + "\n" + "___" + "\n\n" + "Best wishes," + "\n\n" + "Kati" + "\n" + "Membership Director",
                     {name:"___"});

  // End Send E-Mail

  // Set that an a-(Experimental)
  var valueRange = valueSheet.getRange // Here's where I kind of break down . . . I need *something* here that searches the sheet for emailAddress
  setValue(today()) //I'm also not sure that this is the right way to set the value as today's date
  SpreadsheetApp.flush();
    // End Set value
  }
  Browser.msgBox("OK. Reminder messages have been sent. doebtown rocks the house!")
}

1 个答案:

答案 0 :(得分:0)

如果你还在苦苦挣扎,试试这个:

var emails = valueSheet.getRange('X:X').getValues();
var targetRange = valueSheet.getRange('BT:BT');
var dates = targetRange.getValues();
for (var j=0; j<emails.length; ++j) {
    if (emails[j][0] == emailAddress) {
        dates[j][0] = new Date();
        break;
    }
}
targetRange.setValues(dates);
相关问题