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

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

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

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

Q&A

2回答

628閲覧

3000行(人)あるスプレッドシートを開いたら、ダイアログが表示され、その値でフィルタをかけるGASはどのようにかきますか?

m_terai

総合スコア6

Google Apps Script

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

0グッド

1クリップ

投稿2018/08/13 05:01

前提・実現したいこと

Google スプレッドシートにほぼ全社員にあたる約3000人を掲載し
交通費の情報や、健康診断受診記録を記録する場合
自身に関係あるレコードや、管下の部下の情報だけ
フィルターするように、ダイアログ画面に、自身の社員コードや
自部門のコードを入力するGASは、どのように記述するのでしょう?
(要は、関係ない人に、個人情報を閲覧させたくないが、元の表を分割したくないので)

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

設計

データを保存する部分と、入力をさせる部分を分ける必要があります。
(データを保存する部分がspreadsheetなのか、fusiontableなのかは些細です。個人的には、fusiontableは現時点では積極的に使う必要はないと思っています)

というのは1つのシートに書き込み権限を与えてしまえば、いくらフィルタしても(社用なので悪意でやる可能性は低いとしても)誤って他人のデータを書くことを防げないからです
(参考として、情報の流出はだいたいにおいて内部犯です)

データ保存シート

四角い表として作ります(列が長かったり短かかったりしないという意味です)
ただ、その人であることをどうやって特定するのでしょうか?
また機能として"管下"の人の情報を修正できるようにすると、その権限関係を何らかの方法で持たなければ、平社員が他人の情報を書き変えて(誤って)しまうリスクを防げません。
さらに、"管下"のは、一度に複数人の入力ができるようにするのでしょうか。あくまで自分以外の人を編集できる権限がある人が一人ずつのデータを編集するイメージでしょうか?(前者の場合、自分で自分のデータを修正するのとは全く異った画面を作る必要がありますよね?)

入力シート

入力側もスプレッドシートだと過程します(フォームやhtmlを作ることも技術的には可能だと思います)
起動・編集トリガで、下記のgetdataみたいなものを利用して、データを取得してきます。

javascript

1//https://teratail.com/questions/141019 の回答より 2function getdata(needle){ //探したいキーをneedleとして受け取る 3 var datasheet = SpreadsheetApp.openById("[データベースのシートID]"); 4 var all = datasheet.getDataRange().getValues(); 5 return filterJagArray(all, 1, needle); 6} 7function filterJagArray(haystack, coln, needle) { 8 return haystack.filter(function(element, index, array) { 9 return element[coln].indexOf(needle) > -1; 10 }); 11} 12//ここでデータの取得元をfusiontableにすることも可能ではあります

これを、シートの適当なセルに配置します。
また、図形を貼りつけて、図形に登録用関数を埋め込んでボタン的に利用します。
(データベースの役目を果たすシートに書き込みをする)

要件となるべき情報が少なすぎて、より実情に添った具体的な提案・回答に至れません。

--
余談ですが、トランザクションが全く考慮できないのと、個人情報(にあたるのかも分かりませんが)を社外に置くことに法規制上の問題がないのかが気になります。

投稿2018/08/16 04:19

papinianus

総合スコア12705

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

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

0

スプレッドシートだと検索がつらくなると思うので、
データベース(Fusion Tables)使ったほうが楽だと思いますよ。

投稿2018/08/13 07:01

shozi3

総合スコア691

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

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

m_terai

2018/08/13 07:17

そうなんですね!Google Driveを利用して、情報を共有化するという土壌がまだまだでして…せめてスプレッドシートを利用して、個々人の情報を採取したいのです。どうかすると、上司に紙で回覧させるという文化なのです。しかも、Fusion Tablesのアクセス権もありません。いずれにしても、アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問