Google apps script 如何使用脚本将数据从google表单复制到其他表单?
我正在尝试使用脚本将数据从google forms表复制到一个更“前端”的表中 这一切基本上都可以正常工作,除了如果我多次重新加载页面,每次重新加载时,一些数据会向下推几行 前4列从表“RAW”复制到“FRONT”中,但后4列仅与前4列一起排序。在前4列中,它们也有点“不粘”在对应的内容上 这是复选框的问题吗 第一次重新加载后(外观): 第二次重新加载后: 原始床单看起来也很奇怪。。。为什么谷歌表单输入的数据那么低Google apps script 如何使用脚本将数据从google表单复制到其他表单?,google-apps-script,google-sheets,spreadsheet,Google Apps Script,Google Sheets,Spreadsheet,我正在尝试使用脚本将数据从google forms表复制到一个更“前端”的表中 这一切基本上都可以正常工作,除了如果我多次重新加载页面,每次重新加载时,一些数据会向下推几行 前4列从表“RAW”复制到“FRONT”中,但后4列仅与前4列一起排序。在前4列中,它们也有点“不粘”在对应的内容上 这是复选框的问题吗 第一次重新加载后(外观): 第二次重新加载后: 原始床单看起来也很奇怪。。。为什么谷歌表单输入的数据那么低 “重新加载”页面将再次执行onOpen功能。您确定不想手动执行它们吗?如果
“重新加载”页面将再次执行onOpen功能。您确定不想手动执行它们吗?如果它“自动”重新加载以保持工作表始终处于排序状态,那就太好了。我使用脚本这样做的主要原因是,用户不必自己设置任何过滤器,因为最后4列没有连接到G表单表,因此它们不能与前4列一起排序。手动执行脚本应该会得到相同的结果,不是吗?也许在再次填充之前“全部清除”可以工作…“重新加载”页面会再次执行onOpen功能。您确定不想手动执行它们吗?如果它“自动”重新加载以保持工作表始终处于排序状态,那就太好了。我使用脚本这样做的主要原因是,用户不必自己设置任何过滤器,因为最后4列没有连接到G表单表,因此它们不能与前4列一起排序。手动执行脚本应该会得到相同的结果,不是吗?也许在再次填充之前“清除所有”可以工作。。。
function onOpen() {
fillSheet();
sortSheet();
colorize();
}
//fill FRONT sheet with data from RAW sheet
function fillSheet(){
//get active sheet
var sheet=SpreadsheetApp.getActiveSheet();
//align column 1
var fillRange_employee = sheet.getRange("FRONT!A4:A" + sheet.getLastRow());
var copyRange_employee = sheet.getRange("RAW!B2:B" + sheet.getLastRow());
//align column 2
var fillRange_task = sheet.getRange("FRONT!B4:B" + sheet.getLastRow());
var copyRange_task = sheet.getRange("RAW!C2:C" + sheet.getLastRow());
//align column 3
var fillRange_timestamp = sheet.getRange("FRONT!C4:C" + sheet.getLastRow());
var copyRange_timestamp = sheet.getRange("RAW!A2:A" + sheet.getLastRow());
//align column 4
var fillRange_priority = sheet.getRange("FRONT!D4:D" + sheet.getLastRow());
var copyRange_priority = sheet.getRange("RAW!D2:D" + sheet.getLastRow());
//style
copyRange_priority.setHorizontalAlignment("center");
copyRange_priority.setVerticalAlignment("center");
//copy-paste
copyRange_employee.copyTo(fillRange_employee);
copyRange_task.copyTo(fillRange_task);
copyRange_timestamp.copyTo(fillRange_timestamp);
copyRange_priority.copyTo(fillRange_priority);
}
//colorize "priority" column
function colorize(){
var i = 4;
//get active sheet
var sheet=SpreadsheetApp.getActiveSheet();
//loop through column until no entries
while(sheet.getRange("FRONT!D"+ i).getValue() != ""){
//set different colors
if(sheet.getRange("FRONT!D"+ i).getValue() == "[1]"){
sheet.getRange("FRONT!D"+ i).setBackground("#FA5858");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[2]"){
sheet.getRange("FRONT!D"+ i).setBackground("#FE9A2E");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[3]"){
sheet.getRange("FRONT!D"+ i).setBackground("#FAF332");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[4]"){
sheet.getRange("FRONT!D"+ i).setBackground("#89FA7F");
}else if(sheet.getRange("FRONT!D"+ i).getValue() == "[5]"){
sheet.getRange("FRONT!D"+ i).setBackground("#68ADF8");
}
i++;
}
}
//sort sheet
function sortSheet(){
//get active sheet
var sheet=SpreadsheetApp.getActiveSheet();
//get sorting range
var sortRange=sheet.getRange("FRONT!A4:H" + sheet.getLastRow());
//sort
sortRange.sort([{column: 4, ascending: true},{column: 1, ascending: true}]);
}