【问题标题】:Record a cell and copy data to cell in the same row when column matches todays date当列与今天日期匹配时,记录一个单元格并将数据复制到同一行中的单元格
【发布时间】:2021-08-25 22:30:42
【问题描述】:

正如标题所示,我有一个单元格 (B3) 每小时更新一次它的值。在每天的某个时间,比如晚上 10 点,我想要一个脚本自动运行,将值 (x) 从此单元格复制到同一行中的一个单元格,该单元格与标题为今天日期的列相匹配。

这是示例图片

今天 = 26.8.21 (d,m,y :australia)

这是我目前所处的位置:

// Record history from a cell and append to next available row
function recordValue() {
   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheetoffruit");
   // set today's date
  var Date = sheet.getRange("J1").setValue(new Date());
   // look up date range
  var daterange = sheet.getRange("C1:1");
  // find the column position of today's date
   if (date = daterange) {
   var col = daterange.getColumn(); }
   var value = sheet.getRange("B55").getValue();
   var row = 55;
   sheet.getRange(row, col).setValue(value); 
}

我之前能够发布 ("b55") 单元格的值(不在此示例中),但是我无法使其与今天日期的列匹配。

【问题讨论】:

  • 您是否使用了新的 Date 函数来获取今天,然后将其格式化为仅在您的数据中包含 dd.mm.yy?该列是保存您的日期类型字符串还是日期?格式化了吗?
  • G'day aNewb,感谢您的回答。好问题。 “新日期”函数值未在单元格中格式化为 dd.mm.yy,它还包含时间。我格式化为 dd/mm/yy 并仍然遇到此错误:““异常:参数(数字,null)与 SpreadsheetApp.Sheet.getRange 的方法签名不匹配。”。感谢您的帮助

标签: google-apps-script google-sheets


【解决方案1】:

此函数将xtrafruit值写入第1行和数据集最后一行今天数据的列中。

function recordValue() {
   let col = {}
   const ss = SpreadsheetApp.getActive();
   const sh = ss.getSheetByName("Sheetoffruit");
   const dhA = sh.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
   dhA.forEach((h,i) => {col[h] = i+1});
   let xf = sh.getRange(sh.getLastRow(),2).getValue();
   sh.getRange(sh.getLastRow(),col[Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"dd-MMM-yyyy")]).setValue(xf);
  
}

您可以从基于时间的触发器运行该函数,但请确保您选择的时间结束于正确的日期。因为 col 对象和 dts 根据与第 1 行中的字符串匹配来确定列的位置。

在您解释了如何确定行之后,我们可以尝试下面的函数,看看确定写入哪一列的 col 对象出了什么问题。

【讨论】:

  • G'day Cooper,感谢您的回复。当我尝试运行脚本时出现此错误:“异常:参数 (number,null) 与 SpreadsheetApp.Sheet.getRange 的方法签名不匹配。”此外,我应该更清楚。在我将实际运行此脚本的电子表格中,“额外水果”值实际上不会是 lastrow。提前致谢
  • 好的,我如何确定它将在哪一行?
  • 大概日期标题实际上在第 1 行。
  • G'day Cooper,再次感谢您的回复。是的,日期标题都在第 1 行。至于它将在哪一行,我有预定的行,如果这就是你的意思,这些行是不变的?例如。每行都有一个标题。我不确定我是如何真正获得这一行的。是否有诸如“get.lastrow(-7)”之类的函数或类似的函数?请原谅我有限的理解。干杯
  • 您的实际需求似乎与问题中发布的要求有很大不同。我建议再问一个问题,并提供实际需求的示例图像和解释,因为我对和你玩这个愚蠢的游戏不感兴趣。
猜你喜欢
  • 1970-01-01
  • 2019-10-31
  • 2021-09-18
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2022-09-06
  • 2015-04-08
相关资源
最近更新 更多