javascript - Apps 脚本错误 - 排序范围必须包括表单上的所有列

标签 javascript google-apps-script google-docs

尝试根据第一列“时间戳”对电子表格进行排序。运行下面的脚本后,返回“排序范围必须包括表单上的所有列”错误。工作表中有 A-S 列。 A-O 列包含表单数据,而 P-S 列包含人工输入。

function sortForm() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // Change to the "form responses" spreadsheet
  var sheet = ss.getSheetByName("Form Responses");
  var lastCol = 19
  var lastRow = sheet.getLastRow();

  // Get range
  var r = sheet.getRange(2, 1, sheet.getMaxRows() -1, lastCol);

  // Sort the range
  r.sort([{column: 1, ascending: false}]);

}

什么可能导致此错误?

最佳答案

+1 @nah_ny - 我遇到了同样的问题,而且如果该范围在 Google 表单响应表中,则新版本的 Google 电子表格似乎不允许范围排序:

// not working
function sort_form_responses() {
    // get spreadsheet
    var sa = SpreadsheetApp.getActiveSpreadsheet();
    // get forms response sheet by name 
    var sn = sa.getSheetByName("Form Responses 2");
    // get sheet range, assumes headers in row 1
    var r = sn.getRange(2, 1, sn.getMaxRows()-1, sn.getMaxColumns());
    // sort range array
    r.sort([{ column: 2, ascending: false }]);
    ...

适用于我的情况的解决方案是对整个响应表对象使用排序方法:

// working
function sort_form_responses() {
    // get spreadsheet
    var sa = SpreadsheetApp.getActiveSpreadsheet();
    // get forms response sheet by name 
    var sn = sa.getSheetByName("Form Responses 2");
    // sort entire sheet required for form sheets
    sn.sort(2,false)
    ...

关于javascript - Apps 脚本错误 - 排序范围必须包括表单上的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832402/

相关文章:

javascript - 操作 javascript 正则表达式匹配,例如更换前 1 美元

javascript - 新的谷歌脚本版本抛出 javascript 错误

javascript - Google Apps 脚本推送到数组问题

javascript - 使用应用脚本检测 Google 文档中的 PAGE_BREAK 元素

templates - 创建的 PDF 不反射(reflect)对原始文档所做的更改

javascript - 在 Javascript 确认对话框后,网页转到顶部。如何阻止这个?

javascript - 根据在一页上单击哪个 div href,在第二页上加载 slider 的不同部分?

javascript - 在 Google 文档中捕获文本选择

javascript - 如何获取数组中对象的属性值数组

google-apps-script - 调试/修复 "Exceeded maximum execution time"错误 Google Addon