2017-06-21 6 views
1

Googleスプレッドでは、送信された各Googleフォーム用の新しいシートを作成するために使用しているスクリプトがあります。最後の列である列G(フォーム提出列ではない)に基づいて名前付きの新しいシートを作成することになっています。最後の行と見出し行から情報を取り出し、作成したシートの最初の2行にコピーします。また、セルに式を追加して情報を列に入れ(転置)、作成したシートに基づいて書式を設定します。フォーム送信に基づいた名前付きの新しいシートの作成

今は、シートを作成し、数式と書式をコピーしていますが、適切な名前を付けたり、最後の行情報を引き出したりしていません。

助けてください!私は以下のコードをコピーしている 〜チャールズ

:コメントからいくつかの助けを借りて

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

をして遊んで、私は必要なコードを考え出しました。 @クーパーに大きな感謝!

ここにある:

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

関連する問題