嗨,有帮助的撰稿人,
我有一个响应谷歌工作表,它有一组具有不同类型数据值的数据集(截图)如下所示。Col2时间戳值是在gform中用户输入时自动生成的。我将其移动为col2 (默认值在col1中),因为我希望将Quote作为主键。引用ID值是基于提交gform时触发的google脚本自动生成的:-
不一致排序的gresponse表

我想我们应该有按时间戳自动缩短的数据范围(我需要很大程度上按时间戳进行排序),但这种情况与我的不一致。我已经尝试了下面的代码,但仍然没有一致的工作。但是,当我在工作表中手动对其排序时,使用功能筛选器选择时间戳列,然后排序A->Z,它工作得很好。但这对我的要求是无效的
方法1:
// this resulted as in the screenshot.
SortRange = "A2:AC";
SortOrder = [{column:2, ascending: true}];
function multiSortColumns(){
var range = msheet.getRange(SortRange);
range.sort(SortOrder);
}方法2:
// some sorted, some not but still wrong and not ascending order.
SortRange = 2,1,sheet.getLastRow() - 1, sheet.getLastColumn();
SortOrder = [{column:2, ascending: true}];
function multiSortColumns(){
var range = sheet.getRange(SortRange);
range.sort(SortOrder);
}方法3
var sheet=SpreadsheetApp.getActiveSheet().sort(2);
// this doesn't sort by specific column we want and it includes sorting the header.请帮助纠正我的代码。提前准备好。
发布于 2020-09-11 12:40:57
潜在问题:
sheet对象.multiSortColumns .const = ss.getActiveSheet();
后者考虑的是活动表,它可以是电子表格文件中选择的表中的任何一个。
相反,我建议你使用:
const sheet = ss.getSheetByName("Form Responses 1");假设要排序的工作表的名称是Form Responses 1
解决方案:
下面是第二个方法的修改版本,它确保在执行myFunction()时执行所有内容
function myFunction() {
const ss = SpreadsheetApp.getActive();
// const sheet = ss.getActiveSheet(); // not recommended
const sheet = ss.getSheetByName("Form Responses 1"); // recommended
sheet.getRange(2, 1, sheet.getLastRow() -1, sheet.getLastColumn()).sort({column: 2, ascending: true});
}https://stackoverflow.com/questions/63847031
复制相似问题