google-apps-script - 使用 Google 脚本将列中空单元格的值设置为相邻列中的日期(作为字符串)

标签 google-apps-script google-sheets sheetrock

我正在使用Sheetrock.js查询并显示附加到表单的 Google 表格中的数据。问题是我需要能够通过 Timestamp 列搜索工作表,而我只能通过将 Timestamp 转换为纯文本(否则查询结果为空表)来使用 Sheetrock 来执行此操作。将列预格式化为纯文本不起作用,因为格式会被任何新的表单提交覆盖。

我在时间戳右侧添加了第二列,以便将日期时间显示为纯文本,并使用此列查询工作表。我能够编写一个脚本,找到工作表中的最后一行(可能是最新的),将时间戳转换为字符串,并使用表单提交触发器将其写入下一列;然而,由于我编写表单脚本的方式(每次提交都会发送多行,所有行都具有相同的时间戳),这会在列中留下很多空单元格。例如,我将收到具有相同时间戳的三个新提交,但只有最后一个运行该函数,因为从技术上讲,所有三个提交共享相同的触发器。

现在(TL;DR),我正在尝试编写一个脚本来查找 B 列中的空单元格,找到 A 列(时间戳)中的相邻单元格,将其转换为字符串,并将结果写入B 列。我尝试了很多不同的方法,但我对 Google Script 的熟练程度并未达到我想要的水平。 这是我之前的工作:

function lastValue(column) {
  var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
  var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();

  for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
  return values[lastRow - 1];
}

function lastCell(column) {
  var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
  var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();

  for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
  return lastRow;
}

function formatDate () { //Triggered on form submit
   var value = lastValue("A");

   var string = value.toString();
   var cell = "B" + lastCell("A");

   SpreadsheetApp.getActiveSheet().getRange(cell).setValue(string); 
} 

...但我在修复它方面并没有取得太大进展。任何见解或指示将不胜感激!

最佳答案

最好的选择是在提交表单时将第一列的格式转换为文本。

function OnSubmit(e){
  var sheetDatabase = SpreadsheetApp.openById("<<SPREADSHEET ID>>").getSheetByName("Sheet1")
  sheetDatabase.getRange("A:A").setNumberFormat("@");
}

关于google-apps-script - 使用 Google 脚本将列中空单元格的值设置为相邻列中的日期(作为字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45575727/

相关文章:

google-apps-script - 如何使用 Apps 脚本从 Google 文档获取 GIF?

javascript - setValues 不迭代数组

arrays - 如果 B 列不为空,Google 表格会自动递增 A 列

javascript - 在 Ajax 加载的外部 html 中的脚本后调用事件

google-apps-script - 谷歌脚本 - json 到谷歌表

google-apps-script - 从不是由 Google Apps 脚本创建的文件中获取元数据

javascript - 如何从日期/时间戳中减去两个不同的日期?

google-apps-script - 如何拆分和转置两列结果

javascript - 使用sheerock js回调创建变量