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

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

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

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

3420閲覧

Google Formから回答が追加されてもGoogle Spread Sheetに記述されてい関数を自動的に適用させる

wu888

総合スコア10

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

2クリップ

投稿2019/03/18 07:04

前提・実現したいこと

知識不足であることから、ご支援頂ければと思います。
現在、Google Formからアンケートをとっており、Google Spread Sheetで集計を行なっております。

J列からS列までに

  • =VLOOKUP(B2,'商品リスト'!$B$2:$D$999,2,false)
  • =VLOOKUP(B2,'商品リスト'!$B$2:$D$999,3,false)
  • =C2
  • =D2
  • =E2
  • =F2
  • =G2
  • =H2
  • =I2

と、他の項目を参照させるようにしたいです。

発生している課題

Google Formで回答が入るたびに、1行自動的に追加されるため、最初から関数を入れていても自動的にVlookup等が機能しません。
検索で色々な情報を調べていたところ、Google apps scriptで処理すべきではないかと考えておりますが、
どのように対応すべきかよく見えてきません。

或いは、Google Spread Sheetにあるスクリプトエディターで達成できるのではないかとも考えております。

試したこと

Google Formから1行追加されるたびに、J列からS列までの関数を自動的に反映させるにはどのようにすれば宜しいでしょうか。
お力添えいただけると幸いです。

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

既に知り合いに依頼し次のようなコードがGoogle Spread Sheetのスクリプトエディターに記述済みです。

function recreateSheetByBusinessName() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet() var sheetMain = spreadsheet.getSheetByName('フォームの回答 1') var colBusinessNames = sheetMain.getRange(2,10,spreadsheet.getLastRow()-1,1).getValues() var businessNames = [] for(var i=0;i<colBusinessNames.length;i++){ for(var j=0;j<colBusinessNames[i].length;j++){ businessNames.push(colBusinessNames[i][j]) } } businessNames = businessNames.filter(function(x,i,self){ return self.indexOf(x) === i }).sort() for(var i=0;i<businessNames.length;i++){ var sheetName = 'XXX'+businessNames[i]; //FIXME:delete 'XXX' var sheetSub = spreadsheet.getSheetByName(sheetName) if(sheetSub){ sheetSub.clearContents() }else{ spreadsheet.insertSheet(sheetName) sheetSub = spreadsheet.getSheetByName(sheetName) } var query = "=Query('フォームの回答 1'!A:S,\"where J='"+businessNames[i]+"'\")" sheetSub.getRange(1,1).setFormula(query) } }

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

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

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

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

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

papinianus

2019/03/18 07:40

スプレッドシートを開いて確認しようとすれば、VLOOKUPの検索処理が走って、値が見えるような気がしますが、動かないということですか?
wu888

2019/03/19 01:21

アンケート回答が入ると新しい行が追加されます。その行に関数が入っていないため、手作業でコピーが必要になってしまいます。新しく入ってきたアンケート回答に対して関数を実行させたいと考えております..。
guest

回答1

0

関数のコピーの問題であれば、ARRAYFORMULAで良いのではないでしょうか。

↓これらをJ2、K2、などに書くだけです。VLOOKUPをコピーしなくても、B列に値が入れば、勝手にJ,K…が更新されます。

  • =ARRAYFORMULA(IFERROR(VLOOKUP(B2:B,'商品リスト'!$B$2:$D$999,2,false)))
  • =ARRAYFORMULA(IFERROR(VLOOKUP(B2:B,'商品リスト'!$B$2:$D$999,3,false)))
  • =ARRAYFORMULA(TEXT(C2:C, "")

=C2はそれ自身関数ではないため、ARRYFORMULAにかけないので、仮にTEXTを入れています。どう表示したいかで適当な関数をあてはめてください。

投稿2019/03/19 01:35

papinianus

総合スコア12705

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

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

wu888

2019/03/19 05:34

ありがとうございます。 J2にご教示いただきました関数を書いても、新たにアンケート回答が集まると、行が追加され、J3のセルは関数が無いセルとなります。このため、新たに追加されたまっさらなセルに対して関数を入れることができないかと考えております。 ARRAYFORMULAは初めてしりました。ありがとうございます。B列にあるユニークのキーをベースに、J列以降を埋めたいのですが、どうもうまくいきません...。
papinianus

2019/03/19 05:54

ARRAYFORMULAは、J2にだけかけば、J3から下方向に展開してくれる機能なんですが… たしかにformではやったことないですが、3行目4行目と増えても、ARRAYFORMULAでVLOOKUPの一つめを"B2:B"のように(通常1セルを指定するところを範囲にすれば)Bに応じて展開されるはずなんですがねぇ。 ISERRORを外すと、わかりやすいのかもしれないです。
papinianus

2019/03/19 05:57

確認しましたが、私の回答意図のとおりに動作しています。 既に19行目まで回答がある状態の回答シートに、`=ARRAYFORMULA(TEXT(B2:B, ""))`をE2に追記 回答を送信して、シートを開いたところ、E20に、B20の値が入って表示されました。
wu888

2019/03/21 01:19

何度もありがとうございます。 "B2"にキーとなる値が入っております。 "J2"にご教示いただきました関数を入れても”#REF”とエラーになります。 ※=ARRAYFORMULA(IFERROR(VLOOKUP(B2:B,'商品リスト'!$B$2:$D$999,2,false))) 何が足りていないのでしょうか...。本当に申し訳ございません。何度も助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問