実現したいこと
フォームID
Ph2v_kDOiVcOPx-i-GdXon-8V84T0e8JJpHVEc92-Gk
上記のフォームにて「氏名」を選択(id:983843813)し、「連絡先」(ID:1590350412)を入力して回答を送信した時に
スプレッドシートID「1Jtu1kpdoTagSijaN5oSlfq1G-q4rD3dv44PRfC2542M」のシート「社員DB」のB列の氏名と、フォームで回答した氏名が一致するした場合、B列と同じ行のG列に回答を反映させたいのですが、うまくいきません。
発生している問題・エラーメッセージ
TypeError: Cannot read properties of undefined (reading 'response')
onFormSubmit @ 無題.gs:11
該当のソースコード
function onFormSubmit(e) {
// フォームIDと質問ID
var nameQuestionId = '983843813';
var responseQuestionId = '1590350412';
// スプレッドシートのIDと対象列のインデックス
var spreadsheetId = '1Jtu1kpdoTagSijaN5oSlfq1G-q4rD3dv44PRfC2542M';
var nameColumnIndex = 2; // B列
var responseColumnIndex = 7; // G列
var itemResponses = e.response.getItemResponses();
var responseAnswer = '';
var nameAnswer = '';
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
if (itemResponse.getItem().getId() === responseQuestionId) {
responseAnswer = itemResponse.getResponse();
} else if (itemResponse.getItem().getId() === nameQuestionId) {
nameAnswer = itemResponse.getResponse();
}
}
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName('社員DB');
var rowIndex = getRowIndexByName(sheet, nameAnswer, nameColumnIndex);
if (rowIndex != -1) {
sheet.getRange(rowIndex, responseColumnIndex).setValue(responseAnswer);
}
}
function getRowIndexByName(sheet, name, column) {
var dataRange = sheet.getRange(1, column, sheet.getLastRow(), 1);
var data = dataRange.getValues();
for (var i = 0; i < data.length; i++) {
if (data[i][0] === name) {
return i + 1;
}
}
return -1;
}
試したこと
ChatGPTで色々と質問をしてみたのですが、一向に解決しません。
ぜひお力添えをお願いしたく存じます。トリガー「onFormSubmit」「createTrigger」のエラーは0%です。

回答2件
あなたの回答
tips
プレビュー