googleフォーム→スプレッドシート自動転記!特定の回答だけ自動で連携する方法

googleフォームからスプレッドシート自動転記 Googleフォームとの連携
googleフォームからスプレッドシート自動転記

GASを使用してGoogleフォームの回答の一部を自動的にスプレッドシートの特定の列に転記する方法を説明します。

ルリ
ルリ

コードの説明も添えていますので、理解しやすくなると思います。

googleフォーム→スプレッドシート自動転記!Googleフォームに回答があったことを起点として、GASを発火させる方法

function answer(e) を発火させるためには、Google Apps Scriptでトリガーを設定する必要があります。

以下に、トリガーを設定する手順を示します。

 ①Google Apps Script エディタを開きます。

 

 ②スクリプトの左メニューバーから「トリガー」をクリックします。

 

 ③トリガーの設定画面が表示されますので、「トリガーを追加」をクリックします。

 

 ④トリガーの作成画面で以下の設定を行います

  • 実行する関数:answer
  • イベントのソース:「フォームから」を選択
  • イベントの種類:「フォーム送信時」を選択

 

 ⑤設定が完了したら、「保存」をクリックしてトリガーを有効化します。

これにより、フォームが送信されるたびに function answer(e) が発火し、指定した処理が実行されます。

googleフォーム→スプレッドシート自動転記!フォームの回答を取得してスプレッドシートの特定の列に転記する方法

// フォームの回答を取得してスプレッドシートの特定の列に転記する
function answer(e) {
  const values = e.response.getItemResponses();
  const targetIndex = 2; // 転記先の列のインデックス(1から始まる)

  // 回答から特定の項目を取得
  let targetValue = values[0].getResponse(); // 例: 回答の1番目の項目を取得

  const ssid = 'スプレッドシートID';
  const sht = SpreadsheetApp.openById(ssid).getSheetByName('test');
  const lrow = sht.getLastRow();

  sht.getRange(lrow + 1, targetIndex).setValue(targetValue);
}

このサンプルコードでは、フォームの回答から特定の項目を取得して、指定された列に転記する処理を行います。

具体的な手順は以下の通りです:

  1. answer 関数はフォームの回答を受け取るトリガーとして設定します。
  2. getItemResponses() メソッドを使用して、回答の全ての項目を取得します。
  3. targetIndex 変数で指定されたインデックスに対応する回答の値を取得します。この例では、回答の1番目の項目を取得しています。必要に応じて、他の項目に対しても同様の手順を追加で実行できます。
  4. ssid 変数には対象のスプレッドシートのIDを設定します。
  5. sht 変数にはスプレッドシートのIDを使用してシートを開き、getSheetByName() メソッドを使用して対象のシートを取得します。
  6. lrow 変数でシートの最終行を取得します。
  7. sht.getRange(lrow + 1, targetIndex).setValue(targetValue); のコードを使用して、取得した値を指定された列に転記します。lrow + 1 は最終行の次の行に値をセットすることを意味しています。

このコードを使用すると、指定した項目の回答がフォームから送信されるたびに、スプレッドシートの指定された列に値が自動的に転記されます。

googleフォーム→スプレッドシート自動転記!複数の項目を効率的に転記する方法

サンプルコードを示します。

// フォームの回答を取得してスプレッドシートの特定の列に転記する(複数の項目)
function answer(e) {
  const values = e.response.getItemResponses();
  const targetColumns = [2, 4, 6]; // 転記先の列のインデックス(1から始まる)
  const targetValues = [];

  // 転記する項目を取得
  for (let i = 0; i < targetColumns.length; i++) {
    targetValues.push(values[i].getResponse());
  }

  const ssid = 'スプレッドシートID';
  const sht = SpreadsheetApp.openById(ssid).getSheetByName('test');
  const lrow = sht.getLastRow();

  // 項目を転記する
  for (let i = 0; i < targetColumns.length; i++) {
    sht.getRange(lrow + 1, targetColumns[i]).setValue(targetValues[i]);
  }
}

このサンプルコードでは、targetColumns 配列に転記先の列のインデックスを指定し、targetValues 配列に転記する項目の値を保持します。

具体的な手順は以下の通りです:

  1. answer 関数はフォームの回答を受け取るトリガーとして設定します。
  2. getItemResponses() メソッドを使用して、回答の全ての項目を取得します。
  3. targetColumns 配列には転記先の列のインデックス(1から始まる)を指定します。例えば、2, 4, 6 と指定すると、回答の2番目、4番目、6番目の項目がそれぞれ指定した列に転記されます。
  4. targetValues 配列を用意し、for ループを使用して転記する項目の値を取得します。ループ内で、getResponse() メソッドを使用して回答の値を取得し、targetValues 配列に追加します。
  5. ssid 変数には対象のスプレッドシートのIDを設定します。
  6. sht 変数にはスプレッドシートのIDを使用してシートを開き、getSheetByName() メソッドを使用して対象のシートを取得します。
  7. lrow 変数でシートの最終行を取得します。
  8. for ループを使用して、targetValues 配列の値を指定された列に転記します。ループ内で、sht.getRange(lrow + 1, targetColumns[i]).setValue(targetValues[i]); のコードを使用して、値を転記します。

このコードを使用すると、指定した複数の項目の回答がフォームから送信されるたびに、スプレッドシートの指定された列に値が自動的に転記されます。

googleフォーム→スプレッドシート自動転記!フォームの回答が転記された後に特定の人にメール通知を送る

サンプルコードを示します。

// フォームの回答を取得してスプレッドシートの特定の列に転記し、メール通知を送る
function answer(e) {
  const values = e.response.getItemResponses();
  const targetColumns = [2, 4, 6]; // 転記先の列のインデックス(1から始まる)
  const targetValues = [];

  // 転記する項目を取得
  for (let i = 0; i < targetColumns.length; i++) {
    targetValues.push(values[i].getResponse());
  }

  const ssid = 'スプレッドシートID';
  const sht = SpreadsheetApp.openById(ssid).getSheetByName('test');
  const lrow = sht.getLastRow();

  // 項目を転記する
  for (let i = 0; i < targetColumns.length; i++) {
    sht.getRange(lrow + 1, targetColumns[i]).setValue(targetValues[i]);
  }

  // メール通知を送る
  const recipientEmail = '送信先メールアドレス';
  const subject = 'フォーム回答の通知';
  const message = 'フォームに新しい回答がありました。';
  MailApp.sendEmail(recipientEmail, subject, message);
}

このサンプルコードでは、フォームの回答が転記された後に MailApp.sendEmail() メソッドを使用してメール通知を送信します。

必要な情報を適切に設定してください。

具体的な手順は以下の通りです:

  1. answer 関数はフォームの回答を受け取るトリガーとして設定します。
  2. getItemResponses() メソッドを使用して、回答の全ての項目を取得します。
  3. targetColumns 配列には転記先の列のインデックス(1から始まる)を指定します。
  4. targetValues 配列を用意し、for ループを使用して転記する項目の値を取得します。
  5. スプレッドシートの操作として、項目を指定された列に転記します。
  6. recipientEmail 変数にはメール通知を受け取るアドレスを指定します。
  7. subject 変数にはメールの件名を設定します。
  8. message 変数にはメールの本文を設定します。
  9. MailApp.sendEmail() メソッドを使用して、メール通知を送信します。

このコードを使用すると、フォームの回答が転記された後、指定したメールアドレスに通知メールが自動的に送信されます。

キコ
キコ

必要に応じて、メールの件名や本文をカスタマイズしてください。

コメント

タイトルとURLをコピーしました