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);
}
私はあなたがidで、これを開くには、より良いだろうと思います。 'var ss = SpreadsheetApp.getActiveSpreadsheet();'フォーム送信を取得してスプレッドシートがアクティブでないときはありませんか? – Cooper
私はあなたがappendRowをここで使うことができると思います: 'userSheet.getRange(userSheet.getLastRow()+ 1,1,1、 lastRow [0] .length).setValues(lastRow);' – Cooper
おそらくこの 'userSheet.getRange (userSheet.getLastRow()+ 1,1,1、lastRow [0] .length).setValues(lastRow);これは 'userSheet.getRange(userSheet.getLastRow()+ 1,1,1、lastRow.lengthにする必要があります。 ).setValues(lastRow); ' – Cooper