Javascript 应用程序脚本错误-排序范围必须包括表单上的所有列
尝试根据第一列“时间戳”对电子表格进行排序。运行下面的脚本后,返回“排序范围必须包括表单上的所有列”错误。工作表中有A-S列。A-O列包含表单数据,P-S列包含人工输入Javascript 应用程序脚本错误-排序范围必须包括表单上的所有列,javascript,google-apps-script,google-docs,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 Respon
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}]);
}
什么可能导致此错误?遇到了相同的错误。尝试了所有的方法,但几个小时后,重新创建了电子表格,它成功了。 似乎有些电子表格被所有这些检查损坏了谷歌电子表格的新面貌。
所以,只需重新创建电子表格并读取所有脚本。遇到相同的错误。尝试了所有的方法,但几个小时后,重新创建了电子表格,它成功了。 似乎有些电子表格被所有这些检查损坏了谷歌电子表格的新面貌。
因此,只要尝试重新创建电子表格并读取所有脚本即可。新的谷歌表格提供了一种新的电子表格排序方法:
function sortSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Change to the "form responses" spreadsheet
var sheet = ss.getSheetByName("Requests");
sheet.sort(1, false);
}
新的Google sheets提供了一种对电子表格进行排序的新方法:
function sortSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Change to the "form responses" spreadsheet
var sheet = ss.getSheetByName("Requests");
sheet.sort(1, false);
}
我有同样的错误,并创建了一个新的工作表和表格 使用代码
function sortmysheet () {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastColumn = sheet.getMaxColumns(); // the last column of the sheet
var lastRow = sheet.getMaxRows(); // Returns the position of the last row
var range = sheet.getRange(1, 1, lastRow, lastColumn);
range.sort([2,1]);
}
正如你所看到的,我把整张纸都包括在这个范围内
我还尝试了包含有限行但最大列的部分。尝试删除除A、B之外的所有列。尝试以数字方式设置范围
这适用于未附加到表单的工作表,但在与表单链接的工作表上,我得到了相同的错误
如果我取消表单链接,脚本将正常工作
然而,我找到了一个在某些情况下有效的解决方案
虽然文档中没有这样描述,但您可以链接sheet.sort函数
所以我用
function sortmysheet () {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.sort(2, false).sort(1, true);
}
显然,这只适用于整个工作表。我在标题行中设置了名称,以便它们不会被移动
我通过找到了这个解决方案。我也有同样的错误,并创建了一个新的工作表和表单 使用代码
function sortmysheet () {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastColumn = sheet.getMaxColumns(); // the last column of the sheet
var lastRow = sheet.getMaxRows(); // Returns the position of the last row
var range = sheet.getRange(1, 1, lastRow, lastColumn);
range.sort([2,1]);
}
正如你所看到的,我把整张纸都包括在这个范围内
我还尝试了包含有限行但最大列的部分。尝试删除除A、B之外的所有列。尝试以数字方式设置范围
这适用于未附加到表单的工作表,但在与表单链接的工作表上,我得到了相同的错误
如果我取消表单链接,脚本将正常工作
然而,我找到了一个在某些情况下有效的解决方案
虽然文档中没有这样描述,但您可以链接sheet.sort函数
所以我用
function sortmysheet () {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.sort(2, false).sort(1, true);
}
显然,这只适用于整个工作表。我在标题行中设置了名称,以便它们不会被移动
我通过+1@nah_ny找到了这个解决方案-我也遇到了同样的问题,而且新版本的谷歌电子表格似乎不允许范围排序,如果该范围在谷歌表单响应表中:
// 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)
...
+1@nah_ny-我也遇到了同样的问题,如果范围在谷歌表单响应表中,那么新版谷歌电子表格似乎不允许进行范围排序:
// 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)
...
如果该字段是Google Forms响应的一部分,则不允许通过Google电子表格自己的排序菜单进行排序。如果该字段是Google Forms响应的一部分,则不允许通过Google电子表格自己的排序菜单进行排序。