[GAS] 日本語・全角・特定の記号のみを許容するスクリプトを作成したい

実現したいこと

社内のシステムに合わせて書類名を付与していくにあたり、
Google App Scriptを使って、スプレッドシートの指定のセルの入力を、以下の通り制限したものを作成したいです。

  • 半角で入力したものは自動で全角に変える
  • スペース(空白)も半角は全角に変える
  • 記号は特定のもの(+ - &)以外を入力すると拒否メッセージが出る

前提

A:半角から全角にするスクリプト
B:特定の記号が含まれていたら拒否するスクリプト
の2種を作成しようとしています。

該当のソースコード

A:半角から全角にするスクリプト
下記質問を参考に作成しました。(動作確認済)
https://teratail.com/questions/141972

function onEdit() { // 「シート1」でのみ動作する var sheet = SpreadsheetApp.getActiveSheet(); if (sheet.getName() != "シート1") return; // A列でのみ動作する var range = sheet.getActiveRange(); if (range.getColumn() != 1) return; // 入力値の半角数字を全角数字にして再設定する(アルファベット、数字、+-&) var value = range.getValue().replace(/[A-Za-z0-9'+''-'&]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) + 65248); }); range.setValue(value);

B:特定の記号が含まれていたら拒否するスクリプト(拒否する文字が1つの場合は動作確認済)

function newDataValidation(){ var cell = SpreadsheetApp.getActive().getRange('A1:A10'); //範囲を取得 var rule = SpreadsheetApp.newDataValidation() .requireTextDoesNotContain(拒否したい文字) .setAllowInvalid(false) .setHelpText('素材名はガイドラインに沿って入力してください。') .build(); cell.setDataValidation(rule); //作成した入力規則を2行目で取得した範囲に設定 }

発生している問題・試したこと

困っているのは2点です。

(1) Bの "拒否したい文字"と入れているところに複数の記号を指定したいのですが、()内の書き方がわかりません。
<試したこと>
('-')というようにひとつだけを指定すると拒否メッセージを出せました。
('-' '_')と出すと作動しませんでした。
Aのように(-_♪)と並べて記載しても作動しませんでした。

(2) 例えば"♪"などの特殊な記号や、絵文字も拒否したいのですが、そもそもGASのスクリプトに入力ができませんでした。これを指定するコードなどはあるのでしょうか。
調べてみましたが、当方初心者で、どのようにリサーチすれば良いかすらわからず止まってしまっています。

コメントを投稿

0 コメント