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

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

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

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

Q&A

解決済

2回答

8731閲覧

Google Apps Script  query関数で読み込んだデータのGASでの取得

k-na

総合スコア33

Google Apps Script

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

0グッド

0クリップ

投稿2017/01/31 09:01

編集2017/02/02 00:47

###前提・実現したいこと
query関数で読み込んだデータを
GASを使用して条件による色分けを行おうとしています。

###発生している問題・エラーメッセージ
query関数でデータの読み込みはうまくいきました。
selectで読み込むデータを選択し、where likeで条件による抽出も実装しました。

条件 なし
E F
a あ
b い
c あ
d あ

条件 あ
E F
a あ
c あ
d あ

GAS上でgetValue()などで対象データを読み込む際に、
where likeにて条件を設定していない状態であれば問題なく値を取得できましたが、条件を絞った場合にデータが取得できません。

sheet.getRange('A1').setValue(sheet.getRange('F1').getValue());
F1のデータをA1に書き込む、処理でなんどか試しましたが
F1にあるデータが条件で絞っていない場合はきちんとA1にデータが表示され、条件で絞ると空白が書き込まれてしまいます。
どちらも見た目上は同じ”あ”です。

条件なし 条件ありでソート
A1 あ A1 空白 どちらも F1セルは"あ"

query関数でwhere likeを使った際にデータ取得ができなくなるのは仕様でしょうか?
また、解決方法などあればご教授いただければ幸いです。

2017/02/02 追記
問題はクエリー関数の部分にあるようです。

=QUERY(※※※!A:CU,"select BR,B,D,AF,AG,AI,BP,AE,K,AU,AT,AZ,BA,BB,BC,BD,BE,BF,BH,BK,AD,Y,CT,AM,AN,M where B like '%"&B10&"%'"&" and K like '%"&C10&"%'"&" and AE like '%"&D10&"%'"&" and AG like '%"&E10&"%'",-1)

別シートのB列を B10セルで条件付けで読み込んでいますが、
条件を入れると、画面上ではソートされいったんデータが入りますが、
F5で更新すると1列目を残してデータが消えます。
内部的にきちんと動いてないってことですかね。
さっぱりです・・・。

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

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

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

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

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

guest

回答2

0

ベストアンサー

以下で実行したらA1に"あ"が入りましたが、なんか質問と違いますか?

Spreadsheetの内容
| |A |B |C |D |
|:--|:--|:--:|--:|--:|--:|
|1||a|あ|=query(importrange("********************ʺ,ʺB:Cʺ),ʺselect Col1, Col2 WHERE Col2 = 'あ'ʺ)|
|2||b|い||
|3||c|あ||
|4||d|あ||

JavaScript

1var gasheet = "*********************"; 2function myFunction() { 3 var ss = SpreadsheetApp.openById(gasheet); 4 var sheet = ss.getSheetByName("シート1"); 5 var test = sheet.getRange('E1').getValue(); 6 sheet.getRange('A1').setValue(test); 7}

Spreadsheetの結果

ABCDE
1aa
2bc
3cd
4d

追記:
数字で範囲指定したい場合は以下
=query(importrange(ʺ1itlwbKjcBA0rZ2JiBMRq-BxLH4TvCIuF-ragvO4C0RAʺ,ʺB:Cʺ),ʺselect Col1, Col2 WHERE (Col2<2017010030) OR (Col2>=2017010040)ʺ)

投稿2017/02/01 02:18

編集2017/02/02 04:05
hikochang

総合スコア648

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

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

hikochang

2017/02/01 02:25

一度編集の途中で回答してしまいました。
k-na

2017/02/02 00:32

回答ありがとうございます。 実際に不具合が起きてるデータが、個人情報を含んだデータのため簡易的な例で質問しましたが、 確かに予定どおり動きますね・・・。 不具合?がおきてるデータの場合、F列からAE列までデータがはいっており、別シートかクエリで読み込んでます。 =QUERY('※※※'!A:CU,"select BR,B,D,AF,AG,AI,BP,AE,K,AU,AT,AZ,BA,BB,BC,BD,BE,BF,BH,BK,AD,Y,CT,AM,AN,M where B like '%"&B10&"%'"&" and K like '%"&C10&"%'"&" and AE like '%"&D10&"%'"&" and AG like '%"&E10&"%'",-1) B列で条件を入れた時(2017010001~2017010090でデータがあり、201701003%で絞る) 不具合?がおきてます。 K列(名前データ)で条件を入れた時は、起きずにデータが取れるようです。(こちらは気づいていませんでした) 同じ内容で異なる結果がでてるので悩ましいです・・・。
k-na

2017/02/02 05:49

回答ありがとうございます! 書式の設定などが怪しいとのことでしょうか。 リンク先を参考に試してみます!
hikochang

2017/02/02 08:42

回答にも書きましたが、数値であれば範囲で指定します。 日付であれば 以下のような書式になります。 SELECT * WHERE Col1 > date '2010-01-15'
k-na

2017/02/03 02:54

ありがとうございます! 問題のセルは数字書式でしたので、範囲指定に変更することで解決しました。 丁寧に教えていただき感謝です。
guest

0

sheet.getRange(1,1).setValue(sheet.getRange(1,6).getValue());

のように、R1C1形式?で表現すればうまくいきましたがどうでしょうか。

投稿2017/01/31 14:08

true

総合スコア440

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

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

k-na

2017/02/02 00:22

回答ありがとうございます。 R1C1形式もためしてみましたが、原因は別にあるようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問