#前提
Googleスプレッドシートで以下のような在庫管理表を運用しています。
物①~③までの物を、担当A~Cがそれぞれの「利用数」の行に必要数を入れることで確保する意味合いとし、残りがマイナスになるようなら相談をする、という運用をしています。
物① | 物② | 物③ | |
---|---|---|---|
担当A利用数 | 1 | ||
担当B利用数 | 2 | ||
担当C利用数 | 1 | 1 | |
在庫数 | 4 | 3 | 3 |
利用数 | 2 | 2 | 1 |
残り | 2 | 1 | 2 |
「利用数」の行はSUM関数を利用、「残り」の行は引き算で数を出しています。
しかし、各担当が利用数を全角数字で入力した場合、SUM関数の計算対象にならず、「利用数」「残り」の数が実態からずれてしまいます。
そこで、ネットの情報を参考にスクリプトエディタから以下のようなonEdit(e)関数を作成し、入力後に半角に自動で直すようにしました。
function onEdit(e) { var value = e.range.getValue().replace(/[0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 65248); }); e.range.setValue(value); }
#問題点
半角に直す処理は正常に動作するのですが、
ユーザーが全角数字を入力した後にUndo(Ctrl+Z)したとき、入力前の値に戻したいところ、全角→半角 の変換処理がUndoされ、全角に戻されてしまいます。
※その後、onEdit処理が再度動き、半角に直されます。
setValueで半角文字をセットした処理がUndoの履歴に登録されているのかと思いますが、この履歴を登録せず、Undo時にユーザー入力の前の値になるように 全角→半角 の変換処理を行いたいのですが、何か方法はありますでしょうか。
よろしくお願いいたします。

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/13 01:59