我一直在努力制作一個腳本,該腳本直接從 Google 表單獲取所有回應并將其發送(或復制)到電子表格。我還想在創建副本后將電子表格發送到 Google Drive(我已經設法完成了這部分)
當我運行腳本時,它沒有顯示任何錯誤。電子表格已創建并存盤在給定的驅動器檔案夾中,但作業表為空。
這是腳本:
function getItemResponses() {
// Open a form by ID and create a new spreadsheet.
var form = FormApp.openById('1ohh3SYGm0F1wzIGeQenk6Vt-epeXY2UHgdYXtH5knWA');
//Prepare new name
var formattedDate = Utilities.formatDate(new Date(), "GMT", "dd-MM-yyyy' 'HH:mm:ss");
var name = form.getTitle() " Copy " formattedDate;
//Prepare file system objects
var oldfile = DriveApp.getFileById(form.getId());
destination = DriveApp.getFolderById("1u6HQQUWXKIkpakInbS9u6opWK10T91Ez");
//create new spreadsheet
var newSpreadsheet = SpreadsheetApp.create(name);
//Copy to newSpreadSheet
var form = FormApp.openById('1ohh3SYGm0F1wzIGeQenk6Vt-epeXY2UHgdYXtH5knWA'),getItemResponses,newSpreadsheet
//move to destination folder
var newFile = DriveApp.getFileById(newSpreadsheet.getId());
var parents = newFile.getParents();
while (parents.hasNext()) {
var parent = parents.next();
parent.removeFile(newFile); //remove from default folder
}
destination.addFile(newFile);
}
提前感謝您的幫助。
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想從現有的 Google 表單中檢索所有回應值。
- 您想將檢索到的值放在新的電子表格上。
- 您想將新電子表格放在特定檔案夾中。
改裝要點:
- 在您的腳本中,將創建新的電子表格。但是沒有放置回應值。我認為這可能是您的問題的原因。
- 為了從 Google Form 中檢索所有回應值,我認為這個示例腳本可能可以使用。參考
- 為了將創建的電子表格移動到特定檔案夾,在這種情況下,您可以使用
moveTo.
當以上幾點反映在你的腳本中時,它變成如下。
修改后的腳本:
function getItemResponses() {
var form = FormApp.openById('1ohh3SYGm0F1wzIGeQenk6Vt-epeXY2UHgdYXtH5knWA');
var formattedDate = Utilities.formatDate(new Date(), "GMT", "dd-MM-yyyy' 'HH:mm:ss");
var name = form.getTitle() " Copy " formattedDate;
destination = DriveApp.getFolderById("1u6HQQUWXKIkpakInbS9u6opWK10T91Ez");
// Create new Spreadsheet.
var newSpreadsheet = SpreadsheetApp.create(name);
// Move the created Spreadsheet to the specific folder.
var newFile = DriveApp.getFileById(newSpreadsheet.getId());
newFile.moveTo(destination);
// Retrieve all response values from Google Form and put them to the created Spreadsheet.
var sheet = newSpreadsheet.getSheets()[0];
var titles = form.getItems().map(e => e.getTitle());
var formResponses = form.getResponses();
var values = formResponses.map(f => f.getItemResponses().reduce((o, i) => {
var r = i.getResponse();
return Object.assign(o, {[i.getItem().getTitle()]: Array.isArray(r) ? r.join(",") : r});
}, {})).map(o => titles.map(t => o[t] || ""));
values.unshift(titles);
sheet.getRange(sheet.getLastRow() 1, 1, values.length, values[0].length).setValues(values);
}
- 運行此腳本時,會創建一個新的電子表格并將其移動到特定檔案夾,所有回應值都從 Google 表單中檢索,并將它們放入創建的電子表格中。
參考:
- 類檔案的 moveTo(destination)
- 相關執行緒。
- 將所有表單答案存盤在一個檔案中
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327419.html
