仕事で、セルに日本語(記号数字以外)が入っているかどうかを判定して処理を分岐したいというのがあったので、
備忘録として書いておきます。
GASで日本語が含まれているかどうかを判定するやりかたとして、
日本語であれば、文字列の長さとバイトでの長さが違うというのを利用して判定する方法をとりました。
function myFunction() { var testString = "1!$%{}(^Xあ"; Logger.log(testString.length); Logger.log(strLenB(testString)); } function strLenB(str){ var len = 0; str = escape(str); for (var i = 0; i < str.length; i++, len++) { if (str.charAt(i) == "%") { if (str.charAt(++i) == "u") { i += 3; len++; } i++; } } return len; } //log結果 testString.length = 10.0 strLenB = 11.0
これで、文字列が入っているかをどうかがわかるので
下記のような感じで条件を書いてあげれば、文字列が含まれているときに処理をすることができます。
function myFunction() { var testString = "1!$%{}(^Xあ"; if(strLenB(testString) > testString.length){ Logger.log("日本語文字列が入っています。"); } }