みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめまして。
スタンドアロンの内製は長いのですがweb連携は初心者の者です。
このたび、グーグルフォームのアンケートをスプレッドシート経由でファイルメーカーに取り込みたいと考えているのですが、
どのようにしたらよいのでしょうか?
現状、
https://qiita.com/tyuma/items/64fe876b93aef14122d8
↑を参考にして、jsonを取得しようとしているのですが、データ取得先のURLがエラーなのか、エラーナンバー5が出てしまいます。
データ取得用URL記述
「https://spreadsheets.google.com/feeds/list/{スプレッドシートID}/{シート番号}/public/full?alt=json#gid={grid id}」
「スプレッドシートID」はスプレッドシートのURLの中の「d/」以後次の「/」まで、「grid id」は同URLの末尾、
「シート番号」はスプレッドシートのシートネーム(ワークシートの下に記述されているもの)、
でテキストを計算式にしてURLを指定しているのですが(波括弧{}はつけていません)、どこが間違っているのでしょうか???
ご指導いただけたらたいへんありがたいです。
目的はというと、数日のミーティング日程候補日から一日を選ぶのに、参加人数の多い日を選ぶために数十人の都合を束ねて集計したい、というものです。
ファイルメーカーユーザーでない人から回答をいただきたい場合、
グーグルフォーム以外でもし皆様がお使いの方法などありましたらご教示いただければなお幸甚にございます。
Offline
Shin様、リプライありがとうございます。
ご提示いただいたページ、読んでおりませんでした。
というか、APIなしでもできるのかと思っておりました。
そうは簡単にいかない、ということでしょうか??
ともあれ熟読してみます。
ひとまずは重ねてありがとうございます!
Google Apps Script 経由の方法が紹介されています。
Google フォームの結果を Claris FileMaker から取得する - 株式会社寿商会
https://kotovuki.co.jp/archives/13512
Offline
Google Apps Script 経由の方法が紹介されています。
Google フォームの結果を Claris FileMaker から取得する - 株式会社寿商会
https://kotovuki.co.jp/archives/13512
qb_dp様、リプライありがとうございます。
JavaScriptとかGoogle Apps Script とかまったくちんぷんかんぷんなのですが(泣、
サンプルを開いた感じ、がんばってこねくり回したらどうにかなりそうな気がしてきました。
動画を見た感じもとてもすっきりしてスピード感もあってよさそうです。
質問数を変えなければ別のフォームでも同じファイルに蓄積できるっぽい?ですし、
フォームごとの集計も楽そうですので、ぜひトライしてみたいと思います。
成功してもつまづいてもまたここでご報告させてくださいね。
ありがとうございました!
お世話になります。
qb_dp様に教えていただいた方法でJSONデータをレコードの各フィールドに取り込むまではできました!
できればあと2つほどお聞きしたく、お助けいただけたら幸いです。
1)
フォームで「OK」にチェックが入ったとき、現状、フィールドに「[”OK”]」というテキスト(括弧付きの値)が返ってきてしまいます。
JSONデータからの各フィールドへの加工用関数はサンプルでは
JSONGetElement ( JSON ; GetValue ( Substitute ( GetFieldName ( Self ) ; "::";"¶" ) ;2 ) )
となっており、「JSON」(フォーム内の全テキスト)から、
フィールドネーム(フォーム上の設問と同一テキスト、例えば「Q1」のような)の次の行のテキスト(値)を取得?
ということなのかなと思うのですが(思い違いだったら解説いただけると幸いです…)、
いずれにしろ前後の「[“」「”]」が不要なので削除したいのですが、どのようにしたらよいのでしょうか。
substitute関数で指定できず。行き詰まりました。
2)
もうひとつ、フィールドネームで取得データを確定していると、
フォームの設問が「Q1」のような汎用的なワードしか設定できず、
ひとつのファイルでデータを蓄積していくのが困難です。
できればフォームの設問が変わっても同一のファイルでデータを取得していきたいと考えており(同じ人にアンケートするので)、
そのため、JSONから、フィールドネームで各フィールドに取得するデータを確定するのでなく、
「設問タイトル」という繰り返しフィールド1~10(フォームの設問タイトルと同一と設問を格納)でデータを取得したいと考えています。
それで、サンプルの関数を少し書き換えて
JSONGetElement ( JSON ; GetValue ( Substitute ( GetRepetition ( 設問タイトル ; 1) ; "::";"¶" ) ;2 ) )
にしてみたのですが、JSON全文が返ってきてしまいこちらも行き詰りました。
JSON関数の中だから、何かもう一手必要、ということなのでしょうか??
恐れ入りますがどうぞよろしくお願いいたします。
追加です!
1)について、
フォームを新たに作り直し、Q1~の順番を前後したりなどの操作をせずにテストしたら、
[“”]がついて「[“OK”]」と返ってくることはなく、テキストだけ「OK」とだけ返ってくるようになりました。
もしかして、グーグルフォーム上でコラムをいじったことが原因だったかも…??
2)についてはまだ無策です。
よろしくお願いします。
GetValue~の意味が解ってないようですが、
テーブル名::フィールド名
という形式の文字列からフィールド名を取り出しているのです。
だからフィールド値で直接指定するなら
JSONGetElement ( JSON ; GetRepetition ( 設問タイトル ; 1) )
のようになるのでは。
JSONの結果がどうなってるのかわからないので、これで動くのかは怪しいですが
これは好みですが、GetRepetitionは長たらしいので私なら
設問タイトル[1]
と書きます。
himadanee様リプライありがとうございます!
現状、取得されたJSONは
{"Q1":"YES","Q2":"YES","Q3":"YES","Q4":"No","Q5":"不明","お名前":"☆☆☆","id":"☆_☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆","timestamp":☆☆☆☆☆☆☆☆☆}
というようなひとかたまりのテキスト状態でして、
現状「フィールドネーム=フォームの設問」にしてあるワード(「Q1」とか)の次のワードを拾いたいのです。
サンプルの計算式
JSONGetElement ( JSON ; GetValue ( Substitute ( GetFieldName ( Self ) ; "::";"¶" ) ;2 ) )
では「:」を改行にして、その下の次の行の値を拾う? みたいなことにしてあるのかなと解釈したのですが、
勘違いなのですね。
現状この計算式でQ1のフィールドに「YES」のテキストが入っては来るのですが。
お恥ずかしながら今年になってやっと7→19に買い替えたのもあり、いろいろ理解が追い付いておらずこちらで勉強させていただいています。
ありがとうございます。
JSONGetElement ( JSON ; "Q1" )
JSONGetElement ( JSON ; "お名前" )
で、Q1の YES、 お名前の ☆☆☆ が返ります。途中で元の式をいじる必要はないですよ。(例のJSONテキストは、最後の要素の引用文字が消えていますので修正を)
Offline
JSONGetElement ( JSON ; "Q1" )
JSONGetElement ( JSON ; "お名前" )
で、Q1の YES、 お名前の ☆☆☆ が返ります。途中で元の式をいじる必要はないですよ。(例のJSONテキストは、最後の要素の引用文字が消えていますので修正を)
Shin様 リプライありがとうございます!
JSONGetElement (JSON ; Form::設問タイトル[1] ) で、
繰り返しフィールド(「設問タイトル」1~10)をフォームの設問内容に設定して、個別のテキストを取得することができました!
すっきりです!
himadanee様もシンプルな記述方法を教えていただいてありがとうございました!
これでアンケートごとポータルに回答がまとまるのであとは集計を設定するだけ、のはず!
ひとつ、Shin様のおっしゃられている
>(例のJSONテキストは、最後の要素の引用文字が消えていますので修正を)
の意味がわからないでいますので、可能であれば教えていただけると幸いです!
JSONテキストはqb_dp様に教えていただいたサンプル
https://kotovuki.co.jp/archives/13512
のGASで取得しているもので、修正するとしたらこのGASのどこか、ということでしょうか?
{"Q1":"YES","Q2":"YES","Q3":"YES","Q4":"No","Q5":"不明","お名前":"☆☆☆","id":"☆_☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆","timestamp":"☆☆☆☆☆☆☆☆☆"}
Last edited by Shin (2023-10-24 14:33:13)
Offline
Shin様 早々にありがとうございます!
すみません、元データをみたところ、私がコピペするときに誤って消してしまったものと思われます(汗
ありがとうございました!
Pages: 1
[ Generated in 0.008 seconds, 10 queries executed - Memory usage: 553.45 KiB (Peak: 574.36 KiB) ]