kokokoko05
@kokokoko05

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【GAS】Google formの内容をスプレットシートへ

解決したいこと

・Googleフォームで入力された内容をスプレットシートへ転記できるようにしたい
-Googleフォームでの設定ではなくGASで設定したい

Googleフォームで設定できるスプレットシートとの連携と別にGASで転記し、バックアップを取れるようにしたく、GASでも回答内容を転記させるようにしたいです。
しかし、タイムスタンプが転記されないようのですが、解決方法を教えて下さい。

※タイムスタンプ以外が転記されるようになりました。

発生している問題・エラー

・タイムスタンプのみ表示されず、タイムスタンプも表示させるようにしたい

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

var ss = SpreadsheetApp.openById("xxxxxxxxx"); 
var sh = ss.getSheetByName("バックアップ");
var lr = sh.getLastRow();

function onFormSubmit(e){
var data = e.response.getItemResponses();
for (var i=0; i<data.length; i++) {
sh.getRange(lr+1,i+1).setValue(data[i].getResponse());
}
}

自分で試したこと

上記記載コードを書き、タイムスタンプが表示されないので、他の方の作成内容などを拝見しましたが、解決まで行けませんでした。

何卒よろしくお願いいたします。

0

3Answer

「該当するソースコード」と「タイムスタンプ」と言われていることが、まったく結びつかないのですが・・・私だけ?

for文の直前にdataの内容をconsole.log(data)で見ることができますか?

0Like

Comments

  1. @kokokoko05

    Questioner

    @YellowGreen さん

    ありがとうございます!
    試したみましたが、タイムスタンプは反映されませんでした・・・

    function onFormSubmit(e){
    var timeStamp = e.response.getTimestamp();
    var data = e.response.getItemResponses();
    for (var i=0; i<data.length; i++) {
    sh.getRange(lr+1,i+1).setValue(data[i].getResponse());
    }
    }

    var timeStamp = e.response.getTimestamp();
    上記箇所が薄グレーとなっており、timeStampの該当ワードを下に追加しないと行けないなどありますか・・?スクリーンショット 2023-10-26 13.06.49.png

  2. 値をシートに記入していないので反映されていないと思います。
    データ数が少ないので気にならないと思いますが、
    1列ごとに記入するのではなく、
    一括して記入する例をお示しします。

    function onFormSubmit(e) {
      const SS_ID = 'xxxxxxxxxxxxx';//スプレッドシートID
      const SH_NAME = 'xxxxxx'//シート名
      const ss = SpreadsheetApp.openById(SS_ID)
      const sh = ss.getSheetByName(SH_NAME);
      const lr = sh.getLastRow();
      const timeStamp = e.response.getTimestamp();
      let data = e.response.getItemResponses();
      data = data.map(v => v.getResponse());
      data.unshift(timeStamp);
      if (data.length > 0) {
        sh.getRange(lr + 1, 1, 1, data.length)
          .setValues([data]);
      }
    }
    

以下で無事反映できました!

function onFormSubmit(e) {
  const SS_ID = 'xxxxxxxxxxxxx';//スプレッドシートID
  const SH_NAME = 'xxxxxx'//シート名
  const ss = SpreadsheetApp.openById(SS_ID)
  const sh = ss.getSheetByName(SH_NAME);
  const lr = sh.getLastRow();
  const timeStamp = e.response.getTimestamp();
  let data = e.response.getItemResponses();
  data = data.map(v => v.getResponse());
  data.unshift(timeStamp);
  if (data.length > 0) {
    sh.getRange(lr + 1, 1, 1, data.length)
      .setValues([data]);
  }
0Like

Comments

  1. 解決したのであれば、クローズにするといいですよ。

Your answer might help someone💌