Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用Google脚本将列中的空单元格的值设置为相邻列中的日期(作为字符串)_Google Apps Script_Google Sheets_Sheetrock - Fatal编程技术网

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

Google apps script 使用Google脚本将列中的空单元格的值设置为相邻列中的日期(作为字符串),google-apps-script,google-sheets,sheetrock,Google Apps Script,Google Sheets,Sheetrock,我用它来查询和显示Google表单中的数据,该表单附在表单上。问题是我需要能够按时间戳列搜索工作表,而我只能通过将时间戳转换为纯文本(否则查询结果为空表)来使用Sheetrock进行搜索。将列预格式化为纯文本不起作用,因为任何新表单提交都会覆盖格式 我在时间戳的右侧添加了第二列,以期在此处以纯文本形式显示日期时间,并使用此列查询工作表。我能够编写一个脚本,查找工作表中的最后一行(可能是最新的),将时间戳转换为字符串,并使用表单提交触发器将其写入下一列;然而,由于我编写表单脚本的方式(每次提交时都

我用它来查询和显示Google表单中的数据,该表单附在表单上。问题是我需要能够按时间戳列搜索工作表,而我只能通过将时间戳转换为纯文本(否则查询结果为空表)来使用Sheetrock进行搜索。将列预格式化为纯文本不起作用,因为任何新表单提交都会覆盖格式

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

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

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("@");
}
提交函数(e){
var sheetDatabase=SpreadsheetApp.openById(“”)。getSheetByName(“Sheet1”)
sheetDatabase.getRange(“A:A”).setNumberFormat(“@”);
}

非常感谢!这就更有意义了!!我不知道为什么我以前没有想到这一点。我现在遇到的唯一问题是,当我在文本中包含前斜杠时,Sheetrock查询似乎会引发一场骚动(例如,
query:"选择A,B,D,E,G,其中A='8/8/2017 15:36:12'
。你不会碰巧知道解决这个问题的神奇方法,是吗?虽然现在我想,我想我可以使用一个去掉斜杠的变量,并使用
包含
,而不是
=
,这会非常接近…是的,这可能是一个选项,但我不确定如何选择ck需要日期格式