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

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

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

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

Q&A

解決済

3回答

730閲覧

Googleスプレッドシートでデータの抽出はできますか

amx004

総合スコア0

Google Apps Script

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

0グッド

2クリップ

投稿2021/12/23 08:33

編集2021/12/24 06:06

Google Apps Scriptを使用して、Googleスプレッドシートのデータを別ファイルのシートへ
コピーしたいのですが、複数のシートから同一のデータ(支店名、日付など)をキーにして
1行分を抽出し、同一のデータごとのシートを作成することは可能なのでしょうか。

例:
「2001年入社社員一覧」ファイル内 シートAのデータ
社員NO.  名前      性別  年齢 支店名
00000000 サトウ ハナコ 女   40 仙台支店
・(以下データ継続)

上記と同じ、「2001年入社社員一覧」ファイル内 シートBのデータ
社員NO.  名前      性別  年齢 支店名
11111111 ヤマダ タロウ 男   40 仙台支店
・(以下データ継続)

上記の2データを、別ファイル「仙台支店社員一覧」の「40代」シートにコピーする方法が
知りたいです。

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

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

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

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

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

guest

回答3

0

GASを使うのであれば
①「ファイル一覧」というスプレッドシートを新たに作成(手動)
※ここに、ファイル名とスプレッドシートのID(もしくはURL)を入力しておきます

ファイル名ID/URL
仙台支店社員一覧ID/URL

そして、GAS側で以下の処理
1.支店名を取得
2.ファイル一覧の中から、該当の支店名のファイルのURLを取得。
(存在しない場合、新規に作成した上で、ファイル名とURLを入力)
3.ファイルのURLから、スプレッドシートを取得

Javascript

1const ss = SpreadsheetApp.openByUrl(“”);

このファイルの中から該当のシートを取得

Javascript

1const sheet = ss.getSheetByName(“”);

(存在しない場合、新規に作成)

javascript

1ss.insertSheet(“シート名”);

これで該当するシートにたどり着けたので、元データを貼り付けてあげれば完了です。
元ファイルのシートの数だけfor文で回してあげれば良いと思います。

投稿2021/12/25 14:23

daltonya

総合スコア109

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

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

0

こんにちは。

GASではなく、以下のQUERY関数を縦結合する方法では如何でしょうか?

function

1={QUERY('シートA'!$A:$E,"select* WHERE D>=40 AND D<=49 AND E='仙台支店'",1);QUERY('シートB'!$A$2:$E,"select* WHERE D>=40 AND D<=49 AND E='仙台支店'",0)

シートの数だけ縦結合を繰り返す必要があるのが難点ですが…。
そもそも元データのフィールドに入社年を増やせるのが理想になるかとは思います。(その場合は縦結合をする必要が無いので管理も容易かと)

投稿2021/12/25 03:01

T_mari

総合スコア73

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

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

0

自己解決

皆様、ご回答ありがとうございました。

ファイルの仕様が変わり、1つのファイル内で「シートA」、「シートB」、「40代」の各シートを
管理することになりましたので、QUERY関数で処理できるようになりました。

=QUERY({'シートA'!C$4:L;'シートB'!C$4:L;(以降26シート省略)},"select * where Col5 = '仙台支店'or Col5 = '盛岡支店'or(以降21支店省略) and Col3 is not null Order by Col9 asc")

上記の関数で、無事に各エリア単位で同年代の社員一覧を作成することに成功しました。

投稿2021/12/29 06:11

amx004

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問