Googleフォームを自動生成②

前回書いた記事の更新版です。

グリッド式の選択肢が作れるようになりました。

※この記事の内容は、Google Apps Script(GAS)を扱える知識が必要です。

こちらを開いてコピーを作成すると早いです。

一応、一から作る手順は以下の通りです。

手順1 スプレッドシートを作成する

フォームのタイトルや説明、質問事項を記入したスプレッドシートを作成します。

スクリプトの都合上、質問等の選択肢は最大10個までにしています。編集すれば増やせます。

手順2 シートにApp Scriptを記述する

以下のコードをすべて貼り付けます。
(シートをコピーした場合は、既に入っています。)

サンプルExcelの中にも、コードは記述してあります。

手順3 ボタンにスクリプトを割り当てる

最後に、スプレッドシートのボタンにスクリプトを割り当てれば完成です。

ボタンを押すと、スプレッドシートと同じ場所にフォームが出来ています。

※押したら押した分だけ次々にできるので気を付けましょう…

あとは、集計するスプレッドシートは、フォームから作るのがいいでしょう。自動で作ると、どのファイルか分からなくなりますので…。あとは、やはり作ったら動作確認を忘れずに…

今後の予定

選択肢によって、違うページに飛ぶようにしたい。技術的には可能です。
しかし、飛ぶページを最初に作成し、選択肢を考えておくなど、最初の設計が出来ていないと作れないマクロしか作れていません…。

終わりに…

同じですが、多くの学校でこういったものはどんどん使われるようになっているのだから、本当は個人で作るよりは…、と思ってしまいますね。

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    Appsheetでリストの内容を動的に変える③

    前書きページはこちら

    今回は、リストをテーブルから参照する方法です。

    今回の元データ。縦方向に選択肢を書きます。
    入力シートは同じ。

    やってみよう

    まず、spreadsheetを作ったら、拡張機能→Appsheet→アプリ作成として、テンプレートを使わずに作ります。※1,2は2列法と同じです。

    1. テーブルを作る
    2. 入力シートのUXを作る
    3. DataのColumnsの設定をする

    1.テーブルを作る

    2.入力シートのUXを作る

    Primary Viewsに入力シートのUXを追加します。

    次に、人を選んだ際の入力画面を作ります。下の方に「入力シート_Detail」があるので、「Quick edit columns]に2つ追加します。

    これにてUXは完了!

    3.DataのColumnsの設定をする

    ここで”入力シート”のリストにしたいcolumnをRefにします…)

    ここでは、選んだ料理をRefにします。

    Refに設定すると、自動で「Souece table」を選ぶ画面になるので、「元データ」を選択。そして、「選んだ料理」に数式を入力します。

    書いてある通りですが、ifs関数で、[食べたい食種]を選んだ結果によって、select関数で、「元データ」シートの対応するColumnが返るようにしています。

    そして、「元データ」のColumnを次のようにします。

    Enumでなくても動作はします。

    大元の「食種」にKEY,LABELともにチェックを入れます。そして、選択肢のTYPEをEnumにします。(しなくても動くけど…)。さらに、Regenerate structureでデータを読み直します。 最後にSAVEを忘れずに。

    こんな感じで動きますが、動画にもあるように料理名の横に黄色の△が表示されてしまいます。(スマホで確認すると見えませんでした。)

    この△が気持ち悪いですが…

    これは、「元データ」のLABELに設定した列にないものにつくそうです。消し方は分かりません…。誰かご指導ください…。

    以上になりますが、食種を追加したときに、それ用に列を追加、数式も修正が必要になります。まだまだ方法はあるはず…

    終わりに

    この方法だと、新しい項目の追加が結構面倒なのです…。詳細項目は横に見ていくので、食種に対して追加!とならず、全食種を入力するような画面になってしまいます。管理が面倒かも。

      コメントを残す

      メールアドレスが公開されることはありません。 が付いている欄は必須項目です

      Appsheetでリストの内容を動的に変える②

      前書きページはこちら

      今回は、2つのリストを2列にすべて書く方法です。

      上の一覧から、下の一覧へ入力します。

      前準備として、「食べたい食種」にデータ入力規則を設定。

      こうすることで、一手間減ります。あと、後述しますが、心の安寧を得られます。

      やってみよう!

      まず、spreadsheetを作ったら、拡張機能→Appsheet→アプリ作成として、テンプレートを使わずに作ります。

      1. テーブルを作る
      2. 入力シートのUXを作る
      3. DataのColumnsの設定をする

      1.テーブルを作る

      このように、2つのシートのテーブルを作ります。

      2.入力シートのUXを作る

      Primary Viewsに入力シートのUXを追加します。

      名前と見た目は、好きなものでOKです。

      次に、人を選んだ際の入力画面を作ります。下の方に「入力シート_Detail」があるので、「Quick edit columns]に2つ追加します。

      これにてUXは完了!

      3.DataのColumnsの設定をする

      ここで他のシートのリストを引用するためのポイント?は、”入力シート”のリストにしたいcolumnをRefにすることでした…(これがよく理解できず時間がかかった…)

      ここでは、選んだ料理をRefにする、ということです。

      Refに設定すると、自動で「Souece table」を選ぶ画面になるので、「元データ」を選択

      そして、下の「Valid if」に、リストが連動するように、

      と入力します。次に、元データを見ると、「Related…」が増えています。そして、「詳細」にkEYとLABELのチェックを入れます。

      こんな感じで動作します。

      終わりに

      前準備で入力規則を設定しましたが、しなくてもRefで持ってくることはできます。その際、開発画面上では詳細に注意の△マークが付き、モヤっとします…。

      また、新しい項目を追加する際、どんどん縦方向に追加できるので、この方法は楽でした。

        コメントを残す

        メールアドレスが公開されることはありません。 が付いている欄は必須項目です

        Appsheetでリストの内容を動的に変える①

        スプレッドシートが、共同で作業するのに便利だと知りました。そして、それをAppsheetを使えば、簡単にスマホアプリ的なものを作れると知り、にわか知識で取り組みました。

        さて、選択肢Aの内容に応じて、選択肢Bの内容を動的に変えたい。よくあることで、Excelやspreadsheetでも勉強しました。(それはまた別な記事に書きます。)

        で、Appshetやってみようと検索すれど、いくつか出てくるけど、正直言ってよくわからん…

        そんな人の一助になれば嬉しく思います。

        2通りの方法を試しました。

        選択項目が2つあるとして記事を書きます。元となるデータの書き方次第で、好みの方をどうぞ。

        Appsheetで、この一覧にデータ入力したい

        最終的には、上の画像にリストから選択して入れるのがゴール!

        2列にすべての要素を書く方法

        1つ目の選択肢が食種、2つ目の動的選択肢が詳細です。

        作り方はコチラ

        テーブル形式で要素を書く方法

        1つ目の選択肢が、黄色の食種、2つ目の動的選択肢が詳細1~3です。

        作り方はコチラ

          コメントを残す

          メールアドレスが公開されることはありません。 が付いている欄は必須項目です

          Googleフォームを…

          自動で作りたい!と思いますよね。スプレッドシートからある程度は自動で作ってくれるようになっていたようなので、GASを使って作成する手順を書いていきます。

          ※この記事の内容は、Google Apps Script(GAS)を扱える知識が必要です。

          ※現段階では、質問による分岐、グリッド式の選択肢は作れません。(そのうち更新したいとは思います…)

          手順1 スプレッドシートを作成する

          フォームのタイトルや説明、質問事項を記入したスプレッドシートを作成します。

          質問入力するスプレッドシートを作成
          このような構成にしました。

          実際の入力例は、以下の通り。

          選択肢に特に意味はありませんので、悪しからず。

          作成したExcelを置いておきます。(スプレッドシートに転記するなどしてお使いください。)

          手順2 シートにApp Scriptを記述する

          以下のコードをすべて貼り付けます。

          サンプルExcelの中にも、コードは記述してあります。

          手順3 ボタンにスクリプトを割り当てる

          最後に、スプレッドシートのボタンにスクリプトを割り当てれば完成です。

          ボタンを押すと、スプレッドシートと同じ場所にフォームが出来ています。

          ※押したら押した分だけ次々にできるので気を付けましょう…

          あとは、集計するスプレッドシートは、フォームから作るのがいいでしょう。自動で作ると、どのファイルか分からなくなりますので…。あとは、やはり作ったら動作確認を忘れずに…

          今後の予定

          選択肢によって、違うページに飛ぶようにしたい。技術的には可能です。
          しかし、今は一覧でとりあえず作って、分岐は手作業で頑張ります…。
          また、グリッド式の質問は、スプレッドシートの記述方法の問題なので、考えればすぐにできそうです。需要があれば作ります。

          終わりに…

          多くの学校でこういったものはどんどん使われるようになっているのだから、本当は個人で作るのではなく、作成ツールとして教育委員会とかもっと上の方で作ってくれたら嬉しいな…

            Googleフォームを…」に1件のコメントがあります

            コメントを残す

            メールアドレスが公開されることはありません。 が付いている欄は必須項目です

            Excel 画像のリンクを一括削除

            題名の通り、ネット上の記事をコピー&ペーストすると、画像にリンクが付いてきたりします。

            文字列のリンクだったら、一括削除できますが、画像となると一括削除できません(実装してほしい)。

            ということで、下記のコードをVBAに貼り付けて実行でOK!

            表示してあるシートに対して実行されますのでご注意を。

            コメントを残す

            メールアドレスが公開されることはありません。 が付いている欄は必須項目です

            マクロで写真を挿入

            写真が数枚ならいいけど、何十人もの写真を大きさを揃えて貼り付け!なんてとても手間!!

            ただ貼り付けるだけなら、

            とVBAで記述すればいいです。あとはファイルパスを繰り返し処理でやらばいいけど…

            「セルサイズに合わせて大きさ調整してね!」

            なんて気軽に言われると、大変さを知ってほしいなと…

            VBAで 写真を挿入→指定のセル範囲に写真をはみ出さないように調整

            完成したものがこちらです

            上のマクロは、「pic_take_it()」を実行すると、その中で、「pic_paste(…)」を呼び出して写真を貼付・調整しています。その方が、何かと便利なので分けました。

            ※LinkToFile:=Trueだと、画像リンクのみ作成
             についてこれは、保存すると分かりますが、Trueだと画像のリンクのみを貼り、エクセルファイルには画像が保存されません。つまり、写真を挿入後保存し、写真をどこかに移動すると、×印になってしまいます。良い点として、エクセルのファイルサイズが小さく済むことですね。

            pic_name = “~\picture.jpg”となっていますが、ファイル名を出席番号にすれば、

            とすれば、マクロで連続で写真が貼り付けられますよ。

            何か分からないことがあれば、フォームでご質問ください。

              コメントを残す

              メールアドレスが公開されることはありません。 が付いている欄は必須項目です

              pyinstaller使用時のpathについて

              こちらに記事が載っています。

              pyinstallerで実行ファイル化すると、動作としてテンポラリフォルダ(_MEI*****というフォルダ)に解凍し、そこで実行する挙動になっています。

              pyinstallerを使用して一つの実行ファイル化するときに、画像や設定等のファイルを参照する方法は2つあります。
              実行ファイルがそれぞれ C:\python\にあるとします。

              1. 実行ファイルと同じフォルダに置いて参照する
              2. ファイルを内蔵して参照する

              1.実行ファイルと同じフォルダに置いて参照する場合

              2.ファイルを内蔵して参照する場合

              実際はテンポラリフォルダ内を参照することになるので、そのパスを取得します。

              とりあえずこんな感じでできます。
              コードを書く際、内蔵するか否か、最初に決めておかないといけないですね。
              そういう意味では、最初の設計はやはり大事です。

                コメントを残す

                メールアドレスが公開されることはありません。 が付いている欄は必須項目です

                シートを連続作成

                シートを連続で作るマクロを書いてみました。

                週ごとにシートを作って、管理することはよくあります。学校だと週案などがそうですね。

                シートを連携させるために…

                前の週の値を参照して、今週分を加算したい。そのためには、以下の条件で元を作ります。

                1. シート名が週を表す数値のみにする
                2. シート名を使って、前の週の値を参照する

                1.については、マクロで連続で作成します。

                簡単な作成画面

                2.シート名の取得について

                VBAでシート名を取得して、B2セルに貼り付ける方法

                これで、B2セルにシート名が出力されます。

                ※別の方法としてマクロを使わず、以下の数式でもシート名を取得できます。

                そして、シート名を関数の中で使うにはINDIRECT関数を使います。

                最後に。マクロを使うか、関数を使うかは好みです。使いやすい方を使うのがいいと思います。

                記事のマクロ、関数を使ったファイル以下です。

                コメントを残す

                メールアドレスが公開されることはありません。 が付いている欄は必須項目です

                証明写真にカット

                学校などで、身分証を自作しているところの一助に!

                試用版を下記よりダウンロード(※フォルダ内の3枚まで処理されます)※作成環境の都合上、60MB+αあります

                ※認識精度を改善したv1.1に更新しました。

                使い方

                1. 写真を一人一人撮影します。解像度は640ピクセル以上を推奨。
                2. 写真データのファイル名を、学籍番号等に変更します。(後から処理しやすくするため)
                3. 本ソフトを起動し、保存してあるフォルダを選択します。
                4. 「開始」をクリックすると、先ほどのフォルダ内に「cut」フォルダが自動作成され、中に画像が保存されています。
                5. 処理できないファイルがあった場合は、「ERROR.TXT」で内容が確認できます。

                微調整の仕方

                1. 縦横比を変更できます。書式に合わせて調整をしましょう。
                2. 結果が大きすぎたり小さすぎたりするときは、±30%まで領域を加減できます。
                3. 上手く認識できないときは、「最小認識サイズ」を調整します。元画像が小さい時は値を小さくします。顔以外も認識してしまう時は、値を大きくします。

                画像サイズはバラバラですが、後日調整版を作ります。

                作成環境

                Windows10、Python3.9.1
                またOpenCVを使用しています。

                質問等は下記のフォームで連絡ください。

                  コメントを残す

                  メールアドレスが公開されることはありません。 が付いている欄は必須項目です