Scriptでスプレッドシートにvlookupやcountifのような関数を埋め込む方法

7,715 views
Skip to first unread message

留年たろを

unread,
Mar 25, 2014, 7:12:43 AM3/25/14
to google-app...@googlegroups.com
Google Apps Scriptでの質問です.
スクリプトエディタで処理を書き,スプレッドシートにvlookupやcountifのような関数を埋め込みたいのですが方法がわかりません.

setValue()でvlookupの処理を書き込もうとしましたが,文字列として出力されてしまいました.

現在,バーコードを利用した在庫管理をスプレッドシートで行っています.
以下,作成物のリンクです.

バーコードと商品の残りの数を入力すると最初に作ったデータ部分を参照し,vlookupでバーコードに対応している商品名が表示されるようにしています.

スプレッドシートにvlookupの関数を書き込みオートフィルタをすればいいだけなのですが,商品の種類数にばらつきがあるため,自動で行数を読み込みvlookupの処理をさせたいと考えています.

スクリプトを利用し,スプレッドシートにvlookupやcountifを行に対し動的に入力する方法がありましたらご教授よろしくお願いします.

以上です.

Takashi Yokoyama

unread,
Mar 25, 2014, 7:53:21 AM3/25/14
to google-app...@googlegroups.com
横山@GDG中国です。

こんばんは。

AppsScriptから関数を埋め込む場合は、setValue()の代わりに、
setFormula()を使えば埋め込むことができます。

例)
sp.getRange("A1").setFormula("=sum(A2:A4)");

よろしくお願いします。



2014年3月25日 20:12 留年たろを <ryunen...@gmail.com>:

--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
Takashi Yokoyama
GDG Chugoku Manager

tksyo...@gmail.com
http://sites.google.com/site/gdgchugokuofficial/
G+: http://goo.gl/VV3eJ
twitter: @GDGChugoku

留年たろを

unread,
Mar 25, 2014, 10:13:47 AM3/25/14
to google-app...@googlegroups.com
横山@GDG中国さん

こんばんは.返信ありがとうございます.
setFormula()でvlookup関数を埋め込むことに成功しました.

もうひとつ質問です.
このvlookupを埋め込むときに検索キーを動的に設定したいのですが,これもスクリプトで可能でしょうか?

スプレッドシートでオートフィルすると検索キーを「A1」としていた場合は,A1→A2→A3→…と検索キーが動的に変わります.
それと同じように,スクリプトで動的に設定できるのかご存知でしたらご教授よろしくお願いします.

以上です.

2014年3月25日火曜日 20時53分21秒 UTC+9 Takashi Yokoyama:
横山@GDG中国です。

こんばんは。

AppsScriptから関数を埋め込む場合は、setValue()の代わりに、
setFormula()を使えば埋め込むことができます。

例)
sp.getRange("A1").setFormula("=sum(A2:A4)");

よろしくお願いします。

2014年3月25日 20:12 留年たろを <ryunen...@gmail.com>:
Google Apps Scriptでの質問です.
スクリプトエディタで処理を書き,スプレッドシートにvlookupやcountifのような関数を埋め込みたいのですが方法がわかりません.

setValue()でvlookupの処理を書き込もうとしましたが,文字列として出力されてしまいました.

現在,バーコードを利用した在庫管理をスプレッドシートで行っています.
以下,作成物のリンクです.

バーコードと商品の残りの数を入力すると最初に作ったデータ部分を参照し,vlookupでバーコードに対応している商品名が表示されるようにしています.

スプレッドシートにvlookupの関数を書き込みオートフィルタをすればいいだけなのですが,商品の種類数にばらつきがあるため,自動で行数を読み込みvlookupの処理をさせたいと考えています.

スクリプトを利用し,スプレッドシートにvlookupやcountifを行に対し動的に入力する方法がありましたらご教授よろしくお願いします.

以上です.

--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-japan+unsub...@googlegroups.com にメールを送信してください。

このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

Takashi Yokoyama

unread,
Mar 25, 2014, 7:48:59 PM3/25/14
to google-app...@googlegroups.com
横山です。

指定する数式を動的に変更すれば可能です。

例えば、以下のようにfor文で繰り返すなどして
セルに設定すればいいと思います。

for(var i = 3; i < 8; i++) {
    sp.getRange("D" + i).setFormula("VLOOKUP(" + "A" + i + ",'データ部分'!$C$3:$E$6,3,FALSE)");
}



2014年3月25日 23:13 留年たろを <ryunen...@gmail.com>:
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。

このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

留年たろを

unread,
Mar 26, 2014, 12:36:03 PM3/26/14
to google-app...@googlegroups.com
横山さん

for文を書くことによって動的な処理を書くことができました.
+を使うことでvlookupで持ってきた値を使って行ごとの計算も出来ました.

また機会がありましたらよろしくお願いします.

for (var i = 3; i <= sheet.getLastRow(); i++) {
  sheet.getRange("D" + i).setFormula(" IFERROR(VLOOKUP(" + "A" + i + ",'データ部分'!$C$3:$E$6, 3, FALSE), \"0\") * " + "B" + i + "");
}

2014年3月26日水曜日 8時48分59秒 UTC+9 Takashi Yokoyama:
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-japan+unsubscri...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
Takashi Yokoyama
GDG Chugoku Manager

tksyo...@gmail.com

--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-japan+unsub...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages