実現したいことおよび問題点
店舗の利用者数を会員と非会員に分け、それぞれフォント色を決めてスプレッドシートに入力しています。
この内、会員の利用者数を集計するためにGASでカスタム関数を以下のソースのように作成し、スプレッドシート上で動作確認をしたところ期待した結果を得られました。
ところが、実際にスプレッドシートをスタッフに共有して運用を始めてみると、カスタム関数を入力してあるセルの表示がいつの間にか「Loading...」という表示になってしまいます。
どのようなタイミングで発生するのか定かではないのですが、この現象の解消手段についてアドバイスをいただければ幸いです。
該当のソースコード
GoogleAppsScript
1//任意のフォント色をSUM 2function sumMembership(range) { 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); 4 var sheet = ss.getActiveSheet(); 5 var row = sheet.getActiveCell().getRow(); 6 var result = 0; 7 var value = 0; 8 for(var i=3; i<=8; i++){ 9 var color = sheet.getRange(row,i).getFontColor(); 10 if(color == "#00ffff") { //カウントする色 11 value = sheet.getRange(row,i).getValue(); 12 result = result + value; 13 } 14 } 15 return result; 16} 17 18// スプレッドシート内では「=sumMembership(B2:G2)」のように利用しています。
スプレッドシート上での利用と現象
以下のように入力したとします。
「#00ffff」が会員のフォント色です。
日付 | 客室1(列B) | 客室2 | 客室3 | 客室4 | 客室5 | 客室6(列G) | 会員計 |
---|---|---|---|---|---|---|---|
7/1(行2) | 2 | 3(#00ffff) | 0 | 2 | 2(#00ffff) | 2 | =sumMembership(B2:G2) |
入力直後は正しく結果が得られます。
日付 | 客室1 | 客室2 | 客室3 | 客室4 | 客室5 | 客室6 | 会員計 |
---|---|---|---|---|---|---|---|
7/1 | 2 | 3 | 0 | 2 | 2 | 2 | 5 |
ところが、翌日などに見たときになぜか「Loading...」となってしまいます。
日付 | 客室1 | 客室2 | 客室3 | 客室4 | 客室5 | 客室6 | 会員計 |
---|---|---|---|---|---|---|---|
7/1 | 2 | 3 | 0 | 2 | 2 | 2 | Loading... |
試したこと
【改善がなかった操作】
- カスタム関数の指定範囲に含まれるセルに対して値を再入力
- スプレッドシートのリロード
【改善があった操作】
- カスタム関数の指定範囲に含まれるセルをドラッグしてコピー
ここまではわかったのですが、これをGAS上で修正する手段がわからず行き詰まっています。
補足情報
- スクリプトの編集権限を持っているのは私だけです。
- スプレッドシートは入力を行うスタッフ全員が編集権限を持っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。