我使用谷歌的形式来创造,我想通过邮戳ZA自动排序的表格。 每当有人填写表格的排序将被触发。
我认为,这样做的方法是:
- 问是否有关于电子表格“的形式回应副本” ......
- 复制电子表格“的形式回应副本” ......
- 排序根据时间戳
下面是我到目前为止的鹅卵石。 它的工作原理只有在第一时间响应被记录下来。 我不是一个编码器,所以任何帮助表示赞赏。 如果有人还可以点我与基本语法命令的列表,我会很感激。
function CopySheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var msheet = ss.getSheetByName("Form Responses");
msheet.copyTo(ss);
var CopySheet = ss.getSheetByName("Copy of Form Responses");
CopySheet.sort(1, false); // here 1 is for column no. 1 that
// is "Column A" and true is for ascending, make it
// false if you want descending.
};
你可以做到这一点没有剧本,通过使用QUERY()
在复印纸上。 举例来说,如果你把这个功能您的复印纸单元格A1,代替您的表格回应表格的关键,你会响应的反向时间戳排序副本结束:
=Query(ImportRange(spreadsheet_key,"Form Responses!A:Z"), "select * order by Col1 desc")
这些数据将定期(约5分钟)刷新,所以它会反映新的表单提交,但不实时。
注意:当使用ImportRange()
作为源数据Query
,你需要参考列在使用查询字符串ColN
符号。
或者,你可以制作电子表格接收表单提交一个表单提交触发功能,并将其排序表格回应复制到复印纸上。 下面的函数做到这一点。 您需要将其设置为电子表格表单提交事件触发功能。 有关如何测试这样的功能的信息,请参阅如何测试中气体的触发功能? 。
function copyFormSubmissions(e) {
var sourceSheet = e.range.getSheet();
var data = sourceSheet.getDataRange().getValues();
var headers = data.splice(0,1)[0]; // remove headers from data
data.sort(reverseTimestampOrder); // Sort 2d array
data.splice(0,0,headers); // replace headers
var destId = "--copy-sheet-ID--";
var destSheet = SpreadsheetApp.openById(destId).getSheetByName('Sheet1');
destSheet.clear();
destSheet.getRange(1,1,data.length,data[0].length).setValues(data);
};
function reverseTimestampOrder(a,b) {
// Timestamp is in first (zero-th) column
return (b[0]-a[0]);
}
如果有人还可以点我与基本语法命令的列表,我会很感激。
该谷歌Apps脚本API的类和方法是参考这里 。 如果你正在学习,尝试教程(同一地点),我建议你通过某种形式的数字化学习的熟悉的Javascript - CodeAcademy.com是一个良好的开端,因为它引入了所有的语言结构,而不注重网页的发展,使得对Googls Google Apps脚本非常重要。