質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

12921閲覧

フォームの回答が最下行に挿入されない

s.maeda

総合スコア147

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/03/08 07:37

編集2017/03/10 07:36

システムの一部を開発しており、フォームの回答をスプレッドシートに送信し、
その回答データをもとにDBもどきを作るということをやっております。

そこで、問題となっているのは、フォーム回答がスプレッドシートに入っているデータの最下行にこないということです。
フォーム回答用のスプレッドシートは、
・タイムスタンプ順
・スクリプトや手入力でのフォーム回答のない行へのデータ入力は行っていない
という状況です。

なお、問題は常に発生するというわけでもありません。

同じ状況である、経験したことがある、解決したことがあるという方は、ご助言賜りたく存じます。
よろしくお願いします。

<追記>
まず、。フォームの回答は、スクリプトを使わずに回答先の変更によってスプレッドシートに出力させています。
その上で、回答が出力されたAシートにおいて、回答データをもとに幾つかデータを追加しています。
さらに、任意のタイミング(メニューバーにボタン作成)でAシートのデータをB,C・・・シートに必要な分反映しているという感じです。

例)
「Aシート:フォーム回答先」
回答データ:身長, 体重
追加データ:BMI

この例をもとにスクリプトを書くとこのような形になっております。
Aシートでのデータ作成は、フォームの回答を受け付けたタイミングで行っています。
他シートへのデータ反映は、Aシートのデータを配列で取得し、他シートに書き込んでいます。
今回の問題とは直接の関係がないと思われますので、省略しております。

Javascript

1function getDatas(){ 2 var sheet 3 = SpreadsheetApp 4 .openById("ID") 5 .getSheetByName("A"); 6 var values 7 = sheet 8 .getDataRange() 9 .getValues(); 10 var lastRow 11 = sheet 12 .getLastRow(); 13 14 //A列:身長 B列:体重 15 //C列:BMI 16 values[lastRow][2] 17 = values[lastRow][1] / ( (values[lastRow][0]/100) * (values[lastRow][0]/100) ); 18 19 sheet 20 .getDataRange() 21 .setValues(values); 22} 23 24function setTrigger(){ 25 var form 26 = FormApp 27 .openById("ID"); 28 29 ScriptApp 30 .newTrigger("getDatas") 31 .forForm(form) 32 .onFormSubmit() 33 .create(); 34}

症状が完全に解決はしていないものの、ご助言いただいた方の回答をBAにいたしました。
現在、最下行に挿入されないことで悩んでもしょうがないので、getLastRowを使用せずにフォーム回答が行われた行を特定して処理を行っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/03/08 07:40

お作りになったコードを質問に書いてください。 それがないと具体的な検討が出来ませんから、回答は不可能ですよ。
s.maeda

2017/03/09 00:24

coco_bauer様 ご指摘、ありがとうございます。文章が足りておりませんでした。フォームの回答は、スクリプトを使わずに回答先の変更によってスプレッドシートに出力させています。概要のみになりますがコードも示します。ここがコードについて質問する場所であることを知っていてこのような質問をしてしまっている非礼をお詫びします。
guest

回答1

0

ベストアンサー

ググっただけなので真偽は分かりませんが、「DBもどき」ということは挿入変更削除があるのでしょうから、以下の理由がありえそうな気がします。

一番下のフォーム行の下に、次のフォーム行は挿入される

Google フォームの回答スプレッドシートをいじったときの、次の回答追加場所は一番下のフォーム行の次の行 – oki2a24

 

フォーム内部にもデータを保持していて、それをシートにもコピー表示しているだけ。

これは連動していなくて、「フォーム入力時」にデータをコピーしてシートに貼っているだけのようで、
シートからデータ行を消しても、フォーム内部には残っています。
Google Apps Script: .appendRow() がフォームの最終行を更新しない - Google プロダクト フォーラム

投稿2017/03/08 08:53

編集2017/03/08 09:04
Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s.maeda

2017/03/09 00:20

Lhankor_Mhy 様 ありがとうございます。 2つ目の資料は、初めて見ました。 なるほど、フォーム内部に保持しているわけですね。 一部は、これで説明がつきそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問