首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的排序脚本工作不一致?

问为什么我的排序脚本工作不一致?
EN

Stack Overflow用户
提问于 2020-09-11 12:23:07
回答 1查看 93关注 0票数 2

嗨,有帮助的撰稿人,

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

不一致排序的gresponse表

​

我想我们应该有按时间戳自动缩短的数据范围(我需要很大程度上按时间戳进行排序),但这种情况与我的不一致。我已经尝试了下面的代码,但仍然没有一致的工作。但是,当我在工作表中手动对其排序时,使用功能筛选器选择时间戳列,然后排序A->Z,它工作得很好。但这对我的要求是无效的

方法1:

代码语言:javascript
复制
// 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:

代码语言:javascript
复制
// 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

代码语言:javascript
复制
var sheet=SpreadsheetApp.getActiveSheet().sort(2);
// this doesn't sort by specific column we want and it includes sorting the header.

请帮助纠正我的代码。提前准备好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-11 12:40:57

潜在问题:

  • 问题中的前两种方法似乎没有定义sheet对象.

  • ,我甚至不确定你是否执行了multiSortColumns .

  • 第三种方法也将对标题进行排序。

  • 的另一个潜在问题是当使用:

const = ss.getActiveSheet();

后者考虑的是活动表,它可以是电子表格文件中选择的表中的任何一个。

相反,我建议你使用:

代码语言:javascript
复制
const sheet = ss.getSheetByName("Form Responses 1");

假设要排序的工作表的名称是Form Responses 1

解决方案:

下面是第二个方法的修改版本,它确保在执行myFunction()时执行所有内容

代码语言:javascript
复制
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});   
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63847031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档