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

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

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

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

Q&A

解決済

1回答

2337閲覧

GASを利用した式をオートフィルしたい。

koromo_t

総合スコア60

Google Apps Script

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

0グッド

0クリップ

投稿2018/03/22 16:22

編集2018/04/05 01:58

スプレッドシートにて、睡眠記録表を作ろうと思いました。
D列からCU列までが時間(1セル15分)で、睡眠時間をオレンジ色で塗りつぶしていきます。
そして、その日の睡眠時間の合計を算出するために、
オレンジ色で塗られたセルの個数を数えてくれるスクリプトを書きました。
というか、ネットからお借りしたものをいじりました。
それがこちら。

javaScript

1function zenbu() { 2 countCellsWithBackgroundColor(); 3 getBackgroundColor(); 4} 5 6// 指定セルの背景色を取得します。 7function getBackgroundColor(rangeSpecification) { 8 var sheet = SpreadsheetApp.getActiveSpreadsheet(); 9 return sheet.getRange(rangeSpecification).getBackgroundColor(); 10} 11 12// 指定範囲のセル背景色に合致するセルの合計数を返します 13// color: 背景色 rangeSpecification: 範囲指定文字列 14function countCellsWithBackgroundColor(color, rangeSpecification) { 15 16 var sheet = SpreadsheetApp.getActiveSpreadsheet(); 17 var range = sheet.getRange(rangeSpecification); 18 19 var x = 0; 20 var i = 0; 21 var j = 0; 22 var cell; 23 for (i = 1; i <= range.getNumRows(); i++) { 24 for (j = 1; j <= range.getNumColumns(); j++) { 25 26 cell = range.getCell(i, j); 27 28 if(cell.getBackgroundColor() == color) 29 x++; 30 } 31 } 32 33 return x; 34}

これをスクリプトエディタに仕込んでおいて、
その日の睡眠時間を書き込むセルCV5に、
「=countCellsWithBackgroundColor(getBackgroundColor("A36"), "D5:CU5")*15/60」
と入力することによって、
範囲内のオレンジ色のセルの個数を数えて、
その個数に15分をかけて60分で割って時間表記にするところまではできました。
あとはオートフィルだ、と思って、下方向にオートフィルしたところ、
ただのコピーになってしまいました。

これは、「"D5:CU5"」の部分がダブルクォーテーションで囲われているからいけないんだと思い、
ダブルクォーテーションを外してオートフィルしたところ、
たしかに希望通りのセル番号が入力されたのですが、計算結果的にはエラー表示になります。
なので、オートフィルのあと、セル番号をダブルクォーテーションで再び囲うように
置換してみようとしましたが、うまくいきません。
やったこととしては、まずは前のダブルクォーテーションを付けてみようと思い、
「検索と置換」で、検索に「D*」、置換後の文字列に「”D*」と書いて、
条件は「正規表現を使用した検索」「数式内も検索」にチェックして、置換してみました。
しかし、「一致するものはありません」という結果になりました。

いろいろと書きましたが、
「=countCellsWithBackgroundColor(getBackgroundColor("A36"), "D5:CU5")*15/60」
という式を簡単にオートフィルする方法はありませんでしょうか、ということです。

よろしくお願いします。

###追記(2018/03/25 6:29)
方針を変えたので、こちらの質問については回答はいらないかな、という状況です。
とりあえず、置き手紙的な感じで書いておきます。
そういうときは「解決済」にしておいたほうがよいのでしょうか…。

解決済みにしました。(2018/04/05 10:56)

上の追記部分にある理由で、解決済みに変更しました。
なんか、質問一覧のページに回答受付中のものがずっとあるのが気になりました。

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

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

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

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

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

guest

回答1

0

自己解決

追記(2018/03/25 6:29)

方針を変えたので、こちらの質問については回答はいらないかな、という状況です。
とりあえず、置き手紙的な感じで書いておきます。
そういうときは「解決済」にしておいたほうがよいのでしょうか…。

解決済みにしました。(2018/04/05 10:56)

上の追記部分にある理由で、解決済みに変更しました。
なんか、質問一覧のページに回答受付中のものがずっとあるのが気になりました。

投稿2018/04/05 01:57

koromo_t

総合スコア60

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問