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

Is there any way to extract a value from particular cell and store it in another spreadsheet cell(everyday @midnight 12) using spreadsheet Appsscript?

我知道我可以在提到的时间戳中提取单元格条目并将值发送到我的邮件 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 的值吗?。 这样我就可以每天在电子表格中输入一个条目(目前,我每天都会收到一封电子邮件)

您可以使用 setValue() 将值写入 sheet。

例如,如果您想写入单元格 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);
}

使用函数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 指向它。