【问题标题】:Set Value on a DIFFERENT Sheet in Google Apps Script在 Google Apps 脚本中的不同工作表上设置值
【发布时间】:2012-07-19 21:41:09
【问题描述】:

我想对"Sending emails from a Spreadsheet" tutorial on the Google Developers page 做一个变体。

我想做他们引导我完成的事情,除了在每次发送电子邮件时标记每行中的单元格时,我想在单独的表格上标记。

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

那么--这是我需要帮助的地方--我希望脚本转到“主”表,找到 emailAddress 在 X 列中的行,然后--在同一行中--设置BT 列。

应该不难。我只是不一定知道如何执行“查找列 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!")
}

【问题讨论】:

  • 这是您询问代码片段的第三个问题,您似乎从不回答或检查已回答的任何答案...您至少阅读它们吗?花时间提供帮助的人通常喜欢知道它很有用......至少我这样做:-)
  • 天哪,我完全阅读了它们。我非常感谢大家给我的所有帮助。我没有意识到我应该将事情标记为已回答。我会回去做那件事。感谢您提供线索!
  • 好的。我检查了我的几个旧帖子的答案。这就是我应该做的一切吗?
  • @Serge:我完全同意你的看法。这是贡献者的期望,并让他们有动力回答问题
  • 明白了。将承诺更好地检查已回答的问题。我总是感谢每个人的贡献;如果没有大家的贡献,我会很迷茫。也就是说,有人对这个小困境有什么想法吗?

标签: google-apps-script


【解决方案1】:

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

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多