我正在写一个谷歌脚本。我需要对表格行进行排序并编写已排序的行。为了实现我使用AlaSql库的目标。我正在尝试按日期排序。我已经一个星期没有找到解决方案了。这是请求代码:
var sql = "select Col1, Col2, Col4, Col8, CAST(Col15 AS date) from ? WHERE Col15 > '2019-01-01' ";
这不起作用。这是整个代码
var file = SpreadsheetApp.openById("id_spreadsheet"); // получаем таблицу по ее id
var sheet = file.getSheetByName('РЕЕСТР2'); // - имя листа в реестре
var range = sheet.getDataRange();
var data_sheet = range.getValues();
var sheet_2 = SpreadsheetApp.getActive().getSheetByName("AlaSql");
var sql = "select Col1, Col2, Col4, Col8, CAST(Col15 AS date) from ? WHERE Col15 > '2019-01-01' "; // строка запроса
var data = getAlaSql(sql, data_sheet); // вызов функции AlaSql
try
{
Logger.log("data.length = " + data.length);
Logger.log("data[0].length = " + data[0].length);
}
catch (e)
{
Browser.msgBox("Не найдено ни одной строки");
}
sheet_2.clearContents(); // очистка данных
removeEmptyRows(sheet_2); // Вызов функции удаления строк лишних
sheet_2.getRange(1, 1,data.length,data[0].length).setValues(data); // запись результата на лист. data.length - длинна строк,data[0].length - длинна столбцов
我已经阅读了很多资料。尝试了以下替代方案
项目清单
项目清单
项目清单
结果与 AlaSql 中的结果相同。整个问题在于按日期过滤。
最初,工作逻辑基于QUERY公式
= query( main_data_sheet ;"select B, D, H, count(I) where (O is not null and O > date
'"&TEXT($B$5;"yyyy-mm-dd") &"' and O < date '"&TEXT($B$6;"yyyy-mm-dd") &"') and
(U = '"&$A$3&"') and (R = '"&$B$8&"' or R = '"&$B$9&"' or
R = '"&$B$10&"' or R = '"&$B$11&"' or R = '"&$B$12&"')
group by B,D,H label B '', D '', H '', count(I) '' ";0)
其中单元格 B8 = 格式为 01/01/2019 的日期。它有效。
我尝试了各种在脚本中编写请求的选项。什么都不适合。截图如下。

问题解决了。非常感谢@contributorpw。可以通过单击链接打开带有脚本的 Google 电子表格 通过单击文件将其复制给自己- 创建副本
我用丁字裤或数字标出日期。
在下面的示例中,第一列是日期列。
例如,选择所有小于给定日期的
对于您的示例,一切都变得更加简单。这是工作程序的完整列表
尝试使用您的 AlaSQL 版本,但结果不是很好,可能是非常旧的代码
您也可以将自己的函数连接到 AlaSQL,但不知何故,它对我来说不适用于日期。