Translate

Post Date:2021年2月2日 

最強のフローリングモップ

MUJI木製ポールと山崎産業ハイマジックドライモップ

無印良品の木製ポールと山崎産業のドライモップとウェットモップを組合せたら

  • 掃除能力
  • エコ
  • サスティナブル
  • デザイン

に優れた、最強のフローリングモップが完成しました。


互換性

山崎産業のドライモップ(乾拭き用)とウェットモップ(水拭き用)は、専用のモップにマジックファスナーで装着するタイプです。しかし、ヘッド部のサイズは通常のフローリングワイパーとほぼ同じです。

下表は、モップを取付けられる状態にしたときのヘッドと交換用モップのサイズ比較です。

山崎産業 無印良品
ヘッド部 幅22.8cm×奥行9.8cm 幅23.2cm×奥行9.0cm
ドライモップ 幅32cm×奥行19cm 幅29cm×奥行16cm
ウェットモップ 幅27cm×奥行15cm 幅28cm×奥行13cm

無印良品のフローリングモップは、カバーを外すと上下にマジックテープが貼られています。ここに山崎産業のモップを貼り付けます。

MUJI木製ポールと山崎産業マイクロファイバーモップ

上写真の右がドライモップ、左がウェットモップになりますが、ヘッドの奥行きが0.8mm違うので、山崎産業のヘッドに装着したときよりも隙間が少しできますが、使用上の問題は全くありません。

無印良品のヘッドに山崎産業のモップを取り付けるとこんな感じです。

無印良品フローリングモップ+山崎産業 ドライモップ
MUJI木製ポールと山崎産業ハイマジックドライモップ
無印良品フローリングモップ+山崎産業 ウェットモップ

掃除能力に長けた山崎産業のモップ

山崎産業は、家庭用だけでなく掃除のプロや業者向けの掃除用具を製造・販売している会社です。山崎産業のフローリングモップで掃除をすると「キレイになった」と実感できます。やっぱり餅は餅屋です。

モップの素材であるマイクロファイバーは、髪の毛の1/10と極細で、断面が多角形の化学繊維です。細い繊維で埃を絡め取り、ゴツゴツした断面で汚れをかき落とします。

しかし、単にマイクロファイバー素材であるというだけではなく、この繊維の特徴を生かして掃除能力を高める構造のモップです。


ドライモップ(乾拭き用)

山崎のドライモップは、側面のループ状になっている部分と、中央部の短い毛(カットパイル)のダブル構造で、下記のように説明されています。

  • ループ部で髪の毛や埃をからめ取る
  • カットパイル部で皮脂汚れをかき取る
  • マイクロファイバーでつやが甦る

ループ状の部分は壁際やコーナー部分に溜まった埃や髪の毛も絡め取ってくれます。

ハイマジックドライモップのループ部

普段はこちらのドライモップを装着して部屋の片隅に置いています。ループ部に絡まった埃や髪の毛はカーペットクリーナーで取っていますが、全体的に汚れてきたら洗濯ネットに入れて洗濯機で洗っています。


ウェットモップ(水拭き用)

フローリングを水拭きすると、砂埃や皮脂で汚れていることに気付かされます。定期的に水拭きをしたいものですが、雑巾掛けは重労働で面倒です。しかし、モップ掛けなら簡単です。

山崎産業のウェットモップは、ふかふかのマイクロファイバー部分と硬い繊維のストライプ構造になっていて、洗剤を使わなくても水だけで黒ずみ(皮脂汚れ)もかき落としてくれます。

ハイマジックウェットモップのストライプ構造

使用後には水洗いをして干していますが、汚れが目立つようになってきたら洗濯機で洗います。


力を入れやすい木製ポール

無印良品の木製ポールは、構造的に強度のある一本柄のポールです。また直径が2cmもあるので、ポールが湾曲することもなく、ゴシゴシと力を入れた水拭きが気持ちよくできます。

ポールを握った木の感触も完璧です。

MUJI木製ポールと山崎産業ハイマジックウェットモップ

下の写真の左は、山崎産業のフローリングワイパー(一本柄)で、右が無印良品の木製ポールです。太さがかなり違います。

フローリングワイパー ポールの比較

エコでサスティナブルなモップ

取り替えシートを使うと毎回ゴミが発生しますが、ドライモップとウェットモップは繰り返し使えますので都度ゴミが発生しません。また定期的に取り替えシートを購入する必要がないので、トータルコストで見ると経済的です。

モップはマジックテープでバリバリと剥がして交換するので、ヘッドのマジックテープ部分は繰り返し使っていれば次第に粘着力が弱くなるに違いありません。しかし、無印良品の掃除用システムは、ポールとヘッドが別々になっているので、ヘッドだけを交換できます。

ヘッドを装着するためのツメも交換可能です。

MUJIアルミ伸縮式ポールと木製ポール

木製ポール自体が壊れるということはないと思うので、必要なパーツを交換しながら長く使えそうです。


出しっ放しにできる木製ポール

毎日使う掃除用具だからこそ、心惹かれるデザインであって欲しいと思います。木製ポールは部屋の片隅に立てかけていても、出しっ放し感がありません。

部屋に置ける掃除用具

機能的で長く使えてデザイン性が高いということを考えれば、買って損のない逸品です。


木製ポールは無印良品のサイトで購入できる

無印良品の木製ポール(110cm)は、残念ながらAmazonや楽天では購入できません。しかし、店舗に行かなくとも 掃除用品システム・木製ポール 室内用 通販 | 無印良品 で購入することができます。

無印良品の掃除用品システムにもドライモップとウェットモップがありますが、山崎産業のモップの組み合わせることで格段に掃除能力が向上します。

組み合わせることでデザイン・機能的に優れたオススメできるフローリングモップとなります。気に入った掃除用具ができれば毎日の掃除も楽しくなります。


もう一つの掃除用具

木製ポールを購入したときにもう一つ無印良品で掃除用具を購入しました。

象と散歩: 掃除の基本は「掃いて」「拭く」(吾妻箒) で新しく購入した箒について書いていますが、掃いたゴミはカーペットクリーナーで収集しています。

でも、エコじゃない。

室内用の塵取りでいいものがないかと探していたのですが、これというものが見つかっていませんでした。MUJIのチリトリは、190円と安価だし、デザインもシンプルなので併せて購入。

MUJI掃除用品システム チリトリ

掃いたゴミの大半はチリトリで収集できますが、仕上げはカーペットクリーナーが必要です。カーペットクリーナーのシート利用が減るのでゴミ量を減らすことはできます。

使用後に静電気で細かな塵がチリトリに付着しますが、水でキレイに洗い流せます。

【無印良品 公式】 掃除用品システム・ちりとり
価格:190円(税込、送料別) (2021/2/3時点)

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Post Date:2021年1月31日 

カクレクマノミとハタゴイソギンチャクの長期飼育

カクレクマノミとハタゴイソギンチャク

上写真のカクレクマノミのペアは、象と散歩: カクレクマノミの飼育は簡単? の中で2013年春に購入と書いているので、飼育開始から8年近くになります。ADW: Amphiprion ocellaris: INFORMATION によると自然下での平均寿命は、6-10年とあります。しかし、飼育下では20年というの記事もありますので、まだまだ長生きしてもらいたいです。

一方、ハタゴイソギンチャクの平均寿命については、Stichodactyla gigantea - Wikipedia に3-5年とありますが、こちらも同じく8年を迎えようとしています。水槽の掃除のときに手を刺されるとちょっと痛いですが、長く飼育しているとイソギンチャクにも愛着が湧いてきます。

しかし、愛着とは裏腹に飼育開始の頃と比べると、飼育方法はだいぶ手抜きとなりました。逆に言えばこれがカクレクマノミとイソギンチャクに必要最小限な機器と飼育ではないかと思っています。


カクレクマノミとハタゴイソギンチャクに必要なもの

過去のブログでは、カクレクマノミとハタゴイソギンチャクの共生には下記の4つが必要だと記載しています。これはより飼育が難しいハタゴイソギンチャクの生態に合わせて飼育環境を考えてのことでした。

  1. 光(LEDスポットライト)
  2. 水質(ろ過装置&プロテインスキマー)
  3. 水温(ヒーター)
  4. 水流(小型ポンプ)

しかし、下の写真のように4番目の水流(小型ポンプ)は、現在は使っていません。またヒーターは真冬のみ利用しています。

必要なアクアリウム器具

水流は不要?

ハタゴイソギンチャクは浅瀬に生息するイソギンチャクなので波(水流)が必要ではないかということで、小型ポンプを使って水流を作っていましたが、小型ポンプのモーターが故障をして使用を止めましたが、ハタゴイソギンチャクに大きな変化はありません。

小型ポンプで発生させる水流は、自然の波と比べるとあまりにも貧弱で意味がなかったようです、、、、。


水温は25℃が最適?

リビングで飼育しているので冬でも水温があまり下がらないということもあり、冬の寒い時期(12月中旬から3月上旬頃)だけヒーターを使っています。

ヒーターの設定温度は20℃です。夏は水温が30℃になるので、20-30℃の中での飼育です。カクレクマノミもハタゴイソギンチャクも水温の変化に思った以上に強いですし、低温にも適応します。しかし、個体差もあると思いますので水温と生体の様子を観察しながらヒーターを使ってください。

カクレクマノミが、日中でもイソギンチャクの中に身を潜めて、じっとしていているのであれば水温を上げましょう。ハタゴイソギンチャクは水温が下がると小さくなりますが、この冬の時期に水温を下げていることで大きくなるハタゴイソギンチャクの成長を抑制できているのかもしれません。

この冬は、ずっと家にいるので部屋が暖かく、リビングに設置している水槽の水温も下がりません。水温計で確認すると18−19℃なのでヒーターをまだ使っていません。カクレクマノミも元気に餌を欲しがって上がってくるので、今の冬はヒーターなしで飼育できそうです。


天然海水とプロテインスキマー

以前、ハタゴイソギンチャクに元気がなくなってしまったときに、天然海水がいいと聞き、釣りに行ったときにポリタンクに汲んできた海水を水槽に入れると徐々に元気になりました。それ以来、人口海水ではなく天然海水を使っています。

水換えは積極的にはしていません。プロテインスキマーのタンクに溜まった分の海水を補給して、蒸発した水は、浄水器の水を足しています。海水も臭くはないのでろ過装置とプロテインスキマーで水質は維持できているようです。時折、水槽のガラス面をメラミンスポンジで汚れを落としていますが、その時に網でかき回して大きなゴミは網ですくい、残りはプロテインスキマーに任せています。

以前は、ハイドロメーターで塩分濃度を確認し、試験紙で水質をチェックしていましたが、今や海水や浄水の水も目分量ですし、水質チェックはまるきっりしていません。あまり神経質にならなくてもカクレクマノミもハタゴイソギンチャクも元気です。


長期飼育からわかった共生飼育の重要な要素

ということで、カクレクマノミとハタゴイソギンチャクの長期共生飼育には、

  • 光合成のための光
  • 適当な水質

を年間を通して維持し、寒くなったらヒーターで水温を上げればいいというのが結論です。

機材的には

  • LEDスポットライト(光合成)
  • エーハイム アクアコンパクト(水質維持)
  • マメデザイン マメスキマー3(水質維持)

という3種の神器と必要に応じてヒーターです。


LEDスポットライト(光合成)

象と散歩: 初心者のイソギンチャクとカクレクマノミの共生飼育 で、カクレクマノミ と共生するイソギンチャクについて書いていますが、ハタゴイソギンチャク、センジュイソギンチャクなど褐色の ”褐虫藻” で光合成をして栄養を得るイソギンチャクには光が必要です。

水槽でこの褐虫藻が光合成するためには、青色LEDスポットライトが最適です。

なぜ青色LEDスポットライトが最適かと言えば、象と散歩: イソギンチャクの飼育には青色LEDスポットライト からの再掲となりますが、

  • 光合成に必要な波長は400nm-500nm(青色)と600nm-700nm(赤色)
  • 海中では赤色光は吸収されてしまう
  • 褐虫藻には青色の光を吸収する光合成補助色素のペリジニンがある
  • 海中の褐虫藻が光合成を行うには青色以外の光は不要
  • 高輝度青色LEDは効率的に青色のみ発光できる
  • 光合成光量子束密度を高めるため光を分散させないスポットライト型

という理由からです。イソギンチャクの飼育に青色LEDより効率的なアクアリムライトはありません。

イソギンチャクの飼育に何度か失敗したあとに「アクシーファインスポット LED 20W ブルー」に辿り着きましたが、青の世界はイソギンチャクには快適な環境だったようです。その後、象と散歩: ハタゴイソギンチャクとカクレクマノミの共生は紫色の世界で大丈夫? で書いた青8赤2白2灯に、そして、現在は、青8赤4灯へと変遷しています。

水槽照明 アクアリウムライト 24W 青8 赤4灯

2代目から46z8(よろずや)が扱っている、お財布に優しいLEDスポットライトにしましたが、残念ながら、青8赤2白2灯は8ヶ月間と短命でした、、、。

46z8(よろずや)で扱っている青色系LEDスポットライトは合計LEDランプ12個で24Wです。青色だけで考えるとLEDライト8個で16Wと、最初に購入した「アクシーファインスポット LED 20W ブルー」より青色の光が弱くなっています。それでもハタゴイソギンチャクは成長を続けているのと、観賞という観点ではブルーよりも紫色の世界の方がカクレクマノミも綺麗に見えるので良しとしています。

青色を中心とするのであれば、こちらです。

メインビジュアルの写真のように紫の世界であれば、青8灯、赤4灯となります。

46z8(よろずや)では上記以外にも、

があります。

LEDスポットライトとして水槽の淵にかけて固定する「AXY FINE SPOT」を使っています。

アームでスポットライトを当てる位置を動かせるのでハタゴイソギンチャクが移動してしまった場合にも追っかけることができます。

またライトの点灯/消灯にアナログ式のプログラムタイマーを使っていましたが、現在は、スマート家電化の一環として購入したスマートプラグに変えました。

スマートプラグでアクアリウムライトをコントロール

アナログ式のタイマーでは「ジジジジ」という時を刻む音がしていましたが、スマートプラグにしてから無音となりました(笑。また時間にも正確です。現在は、8:30点灯、20:00消灯と設定していますが Amazon Echoで、

Alexa, 水槽のライトを点けて/消して

と音声で点灯/消灯のコントロールもできます。

EchoがなくてもスマホとWiFi環境があればスマートプラグは使えます。


エーハイムアクアコンパクト(水質維持)

餌やカクレクマノミ の排出物により小さな海水の世界では分解能力が少ないので ”ろ過装置” は必須です。

エーハイム アクアコンパクトは、"物理ろ過"、"生物ろ過"、"吸着ろ過(活性炭フィルター)" の3種類が組み合わさったコンパクトな外部フィルターです。ポンプ部も水槽にかけるだけなのでセッティングも簡単で初心者向けです。アクアコンパクトには2004と2005の二種類があります。2005の方5cm背が高く、その分、ろ材を多く入れられますが、30cm水槽であれば2004で十分です。

アクアコンパクト 2004 2005
ろ過槽容量 1.0ℓ 1.5ℓ
ろ材容量 0.8ℓ 1.3ℓ
本体寸法 128×(H)191mm 128×(H)241mm

ろ過装置のモーターは6万時間以上連続稼働していますが、異音も故障もなく動作し続けています。しかし、水槽に水を供給するノズルは塩が付着して取れなくなってしまいましたので、見た目からそろそろ替え時かもしれません。

アクアコンパクト2004

生物ろ材

バクテリを繁殖させるために細かい穴がたくさんある多孔質ろ材が使われています。バクテリアの働きにより有害物質を無害化します。エーハイム 純正ろ材の ”エーハイム サブストラット プロ レギュラー” を使っています。掃除は結構な大仕事になるので年に2回、フィルターを交換するタイミングで水で濯ぎ洗いしています。ろ材は7年間で数回しか交換していません、、、。


物理ろ過

エーハイム アクアコンパクト 2004/2005用フィルターパッドセットは、下記のセットとなっています。

  • 細目フィルターパッドx3(1ヶ月毎に交換)
  • 粗目フィルターパッドx1(2〜3回の洗浄、若しくは6ヶ月)
  • ストレーナー用スポンジフィルターx1(2〜3回の洗浄、若しくは6ヶ月)

純正品として販売されているのに交換時期の目安とセットの枚数が異なるのが疑問ですが、ろ過装置を開いて掃除をするのは面倒です。なので、細目フィルターを4ヶ月毎に交換して、その時に粗目フィルターと多孔質ろ材も洗浄しています。粗目フィルターとストレーナー用スポンジフィルターは年に1回の交換です。これでセットの枚数とも合致します。


吸着ろ過

アクアコンパクトは別売の活性炭フィルターパッドが使えます。「活性炭の力によってにごり、悪臭を吸着して水を透明にします。」とあり、最初の頃は使っていましたが、水の匂いも気にならないのでいまは使っていません。


マメデザイン マメスキマー3(水質維持)

象と散歩: ハタゴイソギンチャクの飼育にはプロテインスキマーが必要? でプロテインスキマーについて記載していますが、プロテインスキマーは、泡を発生させてタンパク質の汚れが泡に吸着させて水質を維持するための装置です。

エアレーションでカクレクマノミ、ハタゴイソギンチャクといった生物だけではなく、ろ過装置の生物ろ過をするバクテリアに酸素供給をする効果もあります。

マメデザイン マメスキマー3

"マメデザイン マメスキマー3” は、細いガラス管の中のウッドストーンにエアポンプで空気を送り細かい泡を発生させて泡の力で浮き上がったゴミと海水を外に置いた容器に貯めて行きます。デザインもシンプルで小型水槽にピッタリです。

エアーポンプには "アデックス エアーポンプ X101” を使っています。

アデックス エアーポンプ X101

ウッドストーンは消耗品で、定期的な交換が必要です。

マメデザイン ウッドストーン

プロテインスキマーは、イソギンチャク飼育の水質維持には必須です。


ガラス管を割ってしまった、、、

掃除をしているときにマメスキマー3のガラス管を割ってしまいました。「結構な出費に、、、」とショックを受けましたが、交換部品としてガラス管本体だけで販売されていました。

それでも痛い出費でした。

マメスキマー 交換部品 ガラス菅本体

飼育をこれから始めるなら

水槽、底砂、ライブロックなどについては、象と散歩: カクレクマノミの飼育は簡単? を参考にしてみてください。

イソギンチャクは同時に購入せずにカクレクマノミ が定着してから購入しましょう。アクアリウム店に行かなくてもネットで共に購入できます。ネットで生き物を購入することには躊躇いもありましたが、charm 楽天市場店 で購入したカクレクマノミとハタゴイソギンチャクが長生きしています。カクレクマノミはなるべく成長した4cm以上の個体を選びましょう。

カクレクマノミとハタゴイソギンチャク

自宅で過ごすことが多くなったいまアクアリムを始めるいいチャンスです。

ハードルが高いと言われる海水熱帯魚のカクレクマノミとハタゴイソギンチャクもちょっとしたコツで長く飼育することができます。

Post Date:2021年1月16日 

GASでGoogleフォームの値を取得する(フォームを指定)

ゾウでもわかる Google Apps Script

Googleフォームでの回答内容をGAS(Google Apps Script)で参照する方法です。

Googleフォームの値を取得するには2種類の方法があります。

  1. フォームが実行されたときに値を取得
  2. フォームを指定して回答内容を取得

今回は、「フォームを指定して回答内容を取得」する方法についての説明です。


フォームオブジェクトの取得

フォームオブジェクトを取得する方法には2つあります。


アクティブなフォームを開く

フォームからスクリプトエディタを開いてスクリプトを作成する場合には、アクティブなフォームが取得できます。

変数 = FormApp.getActiveForm()

フォームID/フォームURLを指定してフォームを開く

もうひとつが、フォームIDかフォームURLを指定する方法です。

変数 = FormApp.openBy(フォームID)
変数 = FormApp.openByUrl(フォームURL)

フォームの編集URLが下記の場合にフォームIDは、赤字の部分となります。

https://docs.google.com/forms/d/1234567890abcdefghijklmnopqrstuvwxyz/edit

実際のコードでは下記のように書きます。

function formObject() {
  //フォームID
  var formId = '1234567890abcdefghijklmnopqrstuvwxyz'

  //フォームオブジェクトの取得
  var form = FormApp.openById(formId)
}

フォームURLは、青字の部分で、最後のスラッシュは必要です。

https://docs.google.com/forms/d/1234567890abcdefghijklmnopqrstuvwxyz/edit

URLを指定した場合のサンプルコードです。

function formObject() {
  //フォームURL
  var formUrl    = 'https://docs.google.com/forms/d/1234567890abcdefghijklmnopqrstuvwxyz/'

  //フォームオブジェクトの取得
  var form  = FormApp.openByUrl(formUrl)
}

フォームの回答を取得する

フォームの回答を取得するには3段階の手順が必要です。

  1. フォームの全回答を取得
  2. ひとつの回答を選択
  3. 質問と回答内容を取得

フォームの全回答を取得

上で取得したフォームオブジェクトを指定して全回答を取得します。取得した回答は配列([1件目の回答, 2件目の回答, 3件目の回答, .....])となっているので回答数はlengthでわかります。

※ 実行する際には、var formId = 'フォームID' のフォームIDの部分を書き換えてください。

function formObject() {
  //フォームID
  var formId = '1234567890abcdefghijklmnopqrstuvwxyz'

  //フォームオブジェクトの取得
  var form = FormApp.openById(formId)
  
  //全回答の取得
  var formResponses = form.getResponses()
  
  //全回答数
  Logger.log('回答数 = ' + formResponses.length)
}

現在の回答数が3件であることがわかります。

回答数 = 3

ひとつの回答を選択

上のサンプルコードで全回答を取得した変数formResponsesは配列になっています。いま3件の回答があるので下記のようにして各々を取得できます。

  • formResponses[0] ・・・ 1件目の回答
  • formResponses[1] ・・・ 2件目の回答
  • formResponses[2] ・・・ 3件目の回答

そして、getItemResponses()で回答内容が取得できます。

変数 = formResponses[n番目].getItemResponses()

取得した回答内容にいくつの質問があるのかは、lengthで求められます。サンプルで使用しているフォームの質問は「日付」「時刻」「氏名」と3つです。

Google Sheets(フォーム回答内容)

結果が3となるかを確認します。

function formObject() {
  //フォームID
  var formId = '1234567890abcdefghijklmnopqrstuvwxyz'

  //フォームオブジェクトの取得
  var form = FormApp.openById(formId)
  
  //全回答の取得
  var formResponses = form.getResponses()
  
  //1件目の回答を取得
  var itemResponses = formResponses[0].formResponse.getItemResponses()

  //質問件数
  Logger.log('質問項目数 = ' + itemResponses.length)
}

質問項目数 = 3

質問と回答内容を取得

これでやっと回答内容を取得する準備が整いました。

フォームの質問を取得するには

変数 = n番目の項目.getItem().getTitle()

フォームの回答を取得するには

変数 = n番目の項目.getResponse()

で、取得できます。

下記のコードでで1件目の回答の1つ目の質問と回答内容が取得できます。

function formObject() {
  //フォームID
  var formId = '1234567890abcdefghijklmnopqrstuvwxyz'

  //フォームオブジェクトの取得
  var form = FormApp.openById(formId)
  
  //全回答の取得
  var formResponses = form.getResponses()
  
  //1件目の回答を取得
  var itemResponses = formResponses[0].getItemResponses()
  
  //1件目の回答の1つ目の質問と回答を取得
  var title = itemResponses[0].getItem().getTitle()
  var response = itemResponses[0].getResponse()

  Logger.log('質問内容 = ' + title)
  Logger.log('回答内容 = ' + response)
} 

質問内容 = 日付
回答内容 = 2021-01-10

全回答内容の取得

回答数、質問数はlengthで求められるので、全回答内容を表示するサンプルです。

function formObject() {
  //フォームID
  var formId = '1234567890abcdefghijklmnopqrstuvwxyz'

  //フォームオブジェクトの取得
  var form = FormApp.openById(formId)
  
  //全回答の取得
  var formResponses = form.getResponses()
  
  //i件目の回答を取得
  for (var i = 0; i < formResponses.length; i++)  {
    //回答を格納する配列
    var arr = []
    //i件の回答を取得
    var itemResponses = formResponses[i].getItemResponses()

    for (var j = 0; j < itemResponses.length; j++)  {
      //i件目の回答のj番目の質問と回答を取得
      var title = itemResponses[j].getItem().getTitle()
      var response = itemResponses[j].getResponse()
      arr[j] = '【' + title + '】 ' + response
    }
    Logger.log(i+1 + '件目の回答 = ' + arr)
  }
}

1件目の回答 = 【日付】 2021-01-10,【時刻】 10:10,【氏名】 象と散歩
2件目の回答 = 【日付】 2021-01-11,【時刻】 11:11,【氏名】 キリンと散歩
3件目の回答 = 【日付】 2021-01-12,【時刻】 12:12,【氏名】 イルカと散歩

フォームから回答内容が一致するものを探す

formの回答内容検索して回答内容が一致するものを探すサンプルプログラムとなります。(2022/6/19追記)

一致させる内容については、サンプルを簡単にするために変数としています。

    一致条件
  • 質問内容='氏名'
  • 回答内容='象と散歩'

変数で指定した条件と一致する回答があれば、質問内容と回答内容を出力して、一致するものがなければ '一致なし' と出力します。

複数一致するものがあれば複数回出力されます。

function formObject() {
  //一致条件
  var questionTitle = '氏名'
  var costomerName ='キリンと散歩'

  //フォームID
  var formId = '1234567890abcdefghijklmnopqrstuvwxyz'

  //フォームオブジェクトの取得
  var form = FormApp.openById(formId)
  
  //全回答の取得
  var formResponses = form.getResponses()

  var ans = 0 //一致する回答を見つけた場合に1にする 
  for (var i = 0; i < formResponses.length; i++)  {
    //i件目の回答を取得
    var itemResponses = formResponses[i].getItemResponses()

    for (var j = 0; j < itemResponses.length; j++)  {
      //i件目の回答のj個目の質問と回答を取得
      var title = itemResponses[j].getItem().getTitle()
      var response = itemResponses[j].getResponse()

     //質問項目が questionTitle で 回答内容が costomerName かを確認
      if (title == questionTitle && response == customerName) {
        Logger.log('質問内容 = ' + title)
        Logger.log('回答内容 = ' + response)
        ans = 1
      }
    }
  }
  if (ans == 0) {
    Logger.log('一致なし')
  }
}

タイムスタンプを指定して回答を取得

getResponses(タイプスタンプ)でタイムスタンプが一致するフォームの回答を取得できます。

以下の例は、シートのタイプスタンプ(A列)と一致する回答編集用のURLを取得してシートのE列に書き込む例です。シートIDはフォームIDと同様に取得して変更してください。

function formObject() {
  //フォームID
  var formId = '1234567890abcdefghijklmnopqrstuvwxyz'
  //シートID
  var sheetId = 'abcdefghijklmnopqrstuvwxyz1234567890'
  //シート名
  var sheetName = 'フォームの回答 1'
 
  //フォームオブジェクトの取得
  var form = FormApp.openById(formId)
  var formResponses = form.getResponses()

  //シートオブジェクトの取得
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName)
  var lastRow = sheet.getLastRow() // 最終行の取得

  //シートの2行目から最終行までを処理
  for (var i =2; i <= lastRow; i++)  {
    //A列からタイムスタンプを取得
    var timeStamp = sheet.getRange('A' + i).getValue()
  
    //タイムスタンプが一致するフォームの回答を取得
    var formResponses = form.getResponses(timeStamp)
    //編集用URLの取得
    var editUrl = formResponses[0].getEditResponseUrl()

    //編集用URLをハイパーリンク形式に
    var strEditUrl = '=HYPERLINK("' + editUrl + '","編集用URL")'

    //編集用URLをE列に書き込む
    sheet.getRange('E' + i).setValue(strEditUrl)
  }
}

シートのA列にあるタイムスタンプを取得して変数timeStampに格納して、タイムスタンプが一致する回答を取得しているのがこの部分です。

var formResponses = form.getResponses(timeStamp)

タイムスタンプが一致した回答は配列の0番目に格納されています。getEditResponseUrl()で編集用URLが取得できます。

var editUrl = formResponses[0].getEditResponseUrl()

タイムスタンプはミリ秒まであるので通常は問題ないと思いますが、タイムスタンプが一致する回答が複数あった場合の挙動はわかりません。

シートが下記のように更新されます。回答編集用URLは長いのでハイパーリンクにしました。

Google Sheets(回答編集URLを追加)

GASの基礎を学べる参考図書

ある程度プログラミンがわかっていれば、WEBやYoutubeでも十分に調べられると思いますが、初歩的なところからであれば参考図書は有効な学習手段です。

詳解! Google Apps Script完全入門 [第3版]」は、プラグラミング初心者にわかりやすく説明されています。GASを最初に学ぶ一冊として良書です。

Udemy オススメ講座

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

講師:事務職たらこ

印象に残りやすい手書き風スライドを用いGASの基本的なプログラミングを気軽に学ぶことができる。本講座でGASを活用した自動化ができるレベルにはなれないが、基礎としては十分。

象と散歩:人気の投稿(過去7日間)