GAS スプレッドシートからアンケート作成

やりたいこと

Googleフォームの回答の内容を指定されたシートのC列に回答を入力したい。

困っていること

いろいろ試したが、同じシートのCに回答を載せるコードが見つからないので
参考になるURLまたはコードなどを教えていただけると助かります。

現状説明

GASを使ってスプレッドシート(説明画像A)から主キー(A列)別に質問フォーム(説明画像B)を作るスクリプトを作りました。

説明画像A
イメージ説明
説明画像B
イメージ説明
ここに実現したいことを箇条書きで書いてください。

GAS

function createFormsFromSpreadsheet() { var spreadsheetId = "YOUR_SPREADSHEET_ID"; // スプレッドシートのIDを指定 var sheetName = "質問内容"; // スプレッドシートのシート名を指定 var formTitlePrefix = "YOUR_FORM_TITLE_PREFIX"; // 作成するフォームのタイトルの接頭辞を指定 var questions = ["質問1", "質問2", "質問3"]; // 質問のリストを指定 var ss = SpreadsheetApp.openById(spreadsheetId); var sheet = ss.getSheetByName(sheetName); var lastRow = sheet.getLastRow(); var dataRange = sheet.getRange(2, 1, lastRow - 1, 2); // A列とB列のデータ範囲を指定 var data = dataRange.getValues(); var forms = {}; // フォームを格納するオブジェクト for (var i = 0; i < data.length; i++) { var key = data[i][0]; var date = Utilities.formatDate(data[i][1], 'JST', 'yyyy年MM月dd日'); if (!forms[key]) { var formTitle = formTitlePrefix + " - " + key; forms[key] = FormApp.create(formTitle); } var questionTitle = key + "の勤怠について(" + date + ")"; var question = forms[key].addListItem(); question.setTitle(questionTitle); question.setChoiceValues(questions); question.setRequired(true); // 必須回答に設定 } for (var key in forms) { var form = forms[key]; var formUrl = form.getPublishedUrl(); Logger.log("作成されたフォームのURL(" + key + "): " + formUrl); form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId()); // フォームの回答先を指定 // フォームの回答を監視し、回答があるとフォームを削除するトリガーを設定 var formTrigger = ScriptApp.newTrigger("deleteForm") .forForm(form) .onFormSubmit() .create(); } } function deleteForm(e) { var formId = e.response.getDestinationId(); // 回答されたフォームのIDを取得 var form = FormApp.openById(formId); var itemResponses = e.response.getItemResponses(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheetName = "YOUR_SHEET_NAME"; // 結果を書き込むシートの名前を指定 var sheet = ss.getSheetByName(sheetName); for (var i = 0; i < itemResponses.length; i++) { var response = itemResponses[i].getResponse(); sheet.getRange(e.range.getRow(), i + 3).setValue(response); // C列に回答を書き込む } }

ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント