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

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

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

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

Q&A

解決済

1回答

2936閲覧

GAS(google apps script)でsetFormulaとimportrangeを組み合わせたい

Masatomato

総合スコア13

Google Apps Script

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

0グッド

0クリップ

投稿2018/09/11 05:54

編集2018/09/12 02:02

前提・実現したいこと

※初心者なのでコード汚いとか意味が分からないこと言っていたらすみません。

イメージ説明

現在google apps scriptを使用して上記スケジュール管理表を作っています。
『【個人用】タスク管理シート』にある赤枠で囲った3シートの情報を、
『【管理用】タスク管理シート』に反映させる且つ、
管理側赤枠で囲っている情報更新ボタンを押すと今なら「セルA5」に記載されてる「1月」を参照して、
個人側「セルD6:D7」の情報を引っ張ってきて管理側「セルD6:D7」に反映させたくて、
1人分なら【"importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),"事業部別!$D$6")")】でいけたのですが、
これを複数個所同時に更新させようとするとなかなか上手くできません。

以下のソースコードは1月のみ「for文」を使ってループさせる様にしていますが、
本来なら全ての月に対応させたいです。
また、いまのままだと「D4(黄枠のA)」の人の情報をループで取り続けてきてしまうので、
そこが改善(例:F4、H4、J4と2ずつ離れた値を参照)したい点となります。

該当のソースコード

google

1function Division(){ 2 var updateDivision = SpreadsheetApp.getActive().getSheetByName('事業部別');//事業部別のシート参照させる 3 var place = updateDivision.getRange(5, 1).getValue();//月を参照する場所 4 var max = updateDivision.getLastColumn();//名前列の最終列の列番号 5 6 if(place=="1月"){ 7 for(var i=4;i<max;i+=2){ 8 updateDivision.getRange(6, i).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$D$6\")"); 9 updateDivision.getRange(7, i).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$D$7\")"); 10 } 11 }else if(place=="2月"){ 12 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$E$6\")"); 13 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$E$7\")"); 14 }else if(place=="3月"){ 15 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$F$6\")"); 16 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$F$7\")"); 17 }else if(place=="4月"){ 18 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$G$6\")"); 19 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$G$7\")"); 20 }else if(place=="5月"){ 21 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$H$6\")"); 22 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$H$7\")"); 23 }else if(place=="6月"){ 24 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$I$6\")"); 25 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$I$7\")"); 26 }else if(place=="7月"){ 27 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$J$6\")"); 28 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$J$7\")"); 29 }else if(place=="8月"){ 30 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$K$6\")"); 31 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$K$7\")"); 32 }else if(place=="9月"){ 33 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$L$6\")"); 34 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$L$7\")"); 35 }else if(place=="10月"){ 36 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$M$6\")"); 37 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$M$7\")"); 38 }else if(place=="11月"){ 39 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$N$6\")"); 40 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$N$7\")"); 41 }else if(place=="12月"){ 42 updateDivision.getRange(6, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$O$6\")"); 43 updateDivision.getRange(7, 4).setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),\"事業部別!$O$7\")"); 44 } 45}

試したこと

【setFormula("importrange(index('リンク設定'!$C:$C,match(D$4,'リンク設定'!$B:$B,0)),"事業部別!$D$6")");】
このコードの「D$4」のDを数字や変数に置き換えようとしましたが、エラーとなってしまいました。

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

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

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

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

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

macaron_xxx

2018/09/13 02:14

リンク設定シートの情報を共有してください。
macaron_xxx

2018/09/13 02:16

というか情報更新ボタンがあるならimportrangeを使わずにGAS側で値計算して値をいれるほうがシンプルな気がしますが…。
Masatomato

2018/09/14 03:23

おっしゃる通りで、そのやり方で試して問題解決しました!ありがとうございます。
guest

回答1

0

自己解決

importrangeを使わずにGAS側で値計算したらいけました!

投稿2018/09/14 03:26

Masatomato

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問