尝试根据第一列“时间戳”对电子表格进行排序。运行下面的脚本后,返回“排序范围必须包括表单上的所有列”错误。工作表中有 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/