2017-06-21 59 views
1

在Google表格中,我使用了一個腳本來爲每個提交的Google表單創建一個新工作表。它應該創建一個名稱基於最後一列G列的新工作表(不是表單提交的列)。然後它從最後一行和標題行獲取信息並將其複製到創建的工作表的前兩行。它還將公式添加到單元格中,以便將信息放入列(轉置)並基於創建的表格進行格式化。使用基於表單提交的名稱創建新工作表

現在它正在創建工作表並複製公式和格式,但沒有給出正確的名稱或拉取最後一行信息。

請幫忙! 〜查爾斯

我已經複製下面的代碼:

function onFormSubmit() { 
    // onFormSubmit 
    // get submitted data 
    var ss = SpreadsheetApp.openById(
    '...'); 
    var sheet = ss.getSheetByName("Responses"); 
    var headings = sheet.getRange(1,1,1, 
sheet.getLastColumn()).getValues(); 
    var lastRow = sheet.getRange(sheet.getLastRow(),1,1, 
sheet.getLastColumn()).getValues(); 
    var studentUsername = lastRow[0][6]; 
    // check if username has sheet 
    if(ss.getSheetByName(studentUsername)){ 
    var userSheet = ss.getSheetByName(studentUsername); 
    // if not make 
    } else { 
    var userSheet = ss.insertSheet(studentUsername); 
    userSheet.getRange(1,1,1, 
headings[0].length).setValues(headings); 
    } 
    // copy submitted data to user's sheet 
    userSheet.appendRow([lastRow]); 
    userSheet.appendRow(['=CONCATENATE(B6," ",B5)']); 
    userSheet.appendRow(['=TRANSPOSE(B1:2)']); 
    userSheet.hideRows(1,2); 
    userSheet.setColumnWidth(1, 500); 
    userSheet.setColumnWidth(2, 500); 
    var FormatSheet = ss.getSheetByName("Format"); 
    var FormatRange = FormatSheet.getRange("a3:b28"); 
    FormatRange.copyFormatToRange(userSheet,1,3,3,28); 
} 
+0

我想你最好通過id來打開此。 'var ss = SpreadsheetApp.getActiveSpreadsheet();'當表單提交併且電子表格不活躍時,會不會有次? – Cooper

+0

我想你可以在這裏使用appendRow:'userSheet.getRange(userSheet.getLastRow()+ 1,1,1, lastRow [0] .length).setValues(lastRow);' – Cooper

+0

我想也許這個'userSheet.getRange (userSheet.getLastRow()+ 1,1,1,lastRow [0] .length).setValues(lastRow);'應該是這個'userSheet.getRange(userSheet.getLastRow()+ 1,1,1,lastRow.length ).setValues(lastRow);' – Cooper

回答

1

與評論一些幫助和玩耍,我想通了,我需要的代碼。非常感謝@Cooper!

這就是:

function onFormSubmit() { 
    // onFormSubmit 
    // get submitted data 
    var ss = SpreadsheetApp.openById(
    'Sheet_ID'); 
    var sheet = ss.getSheetByName("Responses"); 
    var row = sheet.getLastRow(); 
    var Col = sheet.getLastColumn(); 
    var headings = sheet.getRange(1,1,1, 
Col).getValues(); 
    var lastRow = sheet.getRange(row, 1, 1, Col); 
    var studentUsername = sheet.getRange(row, Col).getValue(); 
    // check if username has sheet 
    if(ss.getSheetByName(studentUsername)){ 
    var userSheet = ss.getSheetByName(studentUsername); 
    // if not make 
    } else { 
    var userSheet = ss.insertSheet(studentUsername); 
    userSheet.getRange(1,1,1, 
headings[0].length).setValues(headings); 
    } 
    // copy submitted data to user's sheet 
    userSheet.appendRow(lastRow.getValues()[0]); 
    userSheet.appendRow(['=CONCATENATE(B6," ",B5)']); 
    userSheet.appendRow(['=TRANSPOSE(B1:2)']); 
    userSheet.hideRows(1,2); 
    userSheet.setColumnWidth(1, 500); 
    userSheet.setColumnWidth(2, 500); 
    var FormatSheet = ss.getSheetByName("Format"); 
    var FormatRange = FormatSheet.getRange("a3:b28"); 
    FormatRange.copyFormatToRange(userSheet,1,3,3,28); 
} 
+0

去查爾斯的路 – Cooper

相關問題