有什么方法可以使用电子表格 Appsscript 从特定单元格中提取值并将其存储在另一个电子表格单元格中(每天 @midnight 12)?

时间:2021-07-12 04:43:10

标签: google-apps-script google-sheets google-sheets-api spreadsheet

我知道我可以在提到的时间戳提取单元格条目,并将值发送到我的邮件 ID,如下所示。

function triggerMail() {
  // Fetch the monthly sales
  var toGoRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NetWorth").getRange("H741"); 
  var toGo = toGoRange.getValue();
  // Fetch the email address
  var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NetWorth").getRange("J2");
  var emailAddress = emailRange.getValue();
  var date = Utilities.formatDate(new Date(), "GMT+5.30", "dd/MM/yyyy")
  // Send Alert Email.
  var message = '[' + date + ']' + ' Still toGo Rs.' + Number((toGo).toFixed(2)) + ' this month'; // Second column
  var subject = 'Daily ToGo Report';
  MailApp.sendEmail(emailAddress, subject, message);
    
};

有没有办法在电子表格单元格中存储 toGo 的值?。 这样我就可以每天在电子表格中获得一个条目(目前,我每天都会收到一封电子邮件)

2 个答案:

答案 0 :(得分:1)

您可以使用 setValue() 将值写入工作表。

例如,如果您想写入单元格 A1,您可以将其添加到函数的末尾(可能代替发送电子邮件的行):SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NetWorth").getRange('A1').setValue(toGo);


编辑:

如果您想在每次运行函数时保留一个值的日志,您可以将其写入 last row of a given column。例如,将其记录到 A 列:

function logToGo() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NetWorth");
  const toGo = sheet.getRange("H741").getValue();

  // Find the last populated row in the specified column
  const logColumn = 1; // Number of the column to output "toGo" to. A is 1, B is 2, etc.
  let logColumnLastRow = sheet.getMaxRows();
  const data = sheet.getRange(1, logColumn, logColumnLastRow).getValues();
  while (data[logColumnLastRow - 1][0] === "" && logColumnLastRow > 0) {
    logColumnLastRow--;
  }

  // Write to the last row in the specified column
  sheet.getRange(logColumnLastRow+1, logColumn).setValue(toGo);
}

答案 1 :(得分:0)

使用函数 setValue() (link to google's documentation)。

所以在你的第 4 行之后,使用这样的东西:

var enterRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ENTER SHEET NAME").getRange("ENTER RANGE").setValue(toGo);

如果您想将其完全输入到不同的电子表格中,请使用以下内容:

var enterRange = SpreadsheetApp.openById("ENTER SPREADSHEET ID").getSheetByName("ENTER SHEET NAME").getRange("ENTER RANGE").setValue(toGo);

如果您不知道如何找到电子表格 ID,这里有一个 red arrow 指向它。