【質問】
あるタスクを動かしていたところ、Excelから配列に値を代入するステップでエラー"invalid expression"が発生した。
代入するデータに含まれるデータに"%"が含まれているのが原因であることが判明したため、"%%"に変更し処理を行ったところタスクが成功した。
そこで
・Excelは他のデータからのコピー&ペーストを前提としているためデータチェックを増やさない
・"%"を大文字に置き換えるチェックを入れることは避ける
以上の2点を考えたうえでの回避方法はありますか。
また、"%"以外に回避が必要な文字はありますか。
【回答】
AutoMateを使用して「%」を文字列としてエスケープするには「%%」のように記述します。
(ステップにおいて直接「%」を記述する際はこちらにあたります)
しかし「配列 - セット」アクションではなく、「変数 - セット」アクションを使用して値の代入を行いますと代入される文字が「%」を含んでいてもエラーとならず事象を回避することができます。
以下サンプルタスクです。
以下のように2アクションに分解することで事象を回避しつつ、値の代入を文字置換等なしで行う事が可能です。
(「配列 - セット」アクションから配列(5)の要素に関する操作を除去しその後ろに配列(5)のみに値を代入するアクションを追加しています)
-----サンプルタスクここから-----
<AMARRAY ACTIVITY="set" NAME="Pub_FAXData"><SETTER INDEX="1" VALUE="%Excel1DataSet.B%" /><SETTER INDEX="2" VALUE="%Excel1DataSet.C%" /><SETTER INDEX="3" VALUE="%Excel1DataSet.D%" /><SETTER INDEX="4" VALUE="%Excel1DataSet.E%" /><SETTER INDEX="6" VALUE="%Excel1DataSet.G%" /><SETTER INDEX="7" VALUE="%Excel1DataSet.H%" /><SETTER INDEX="8" VALUE="%Excel1DataSet.I%" /><SETTER INDEX="9" VALUE="%Excel1DataSet.J%" /><SETTER INDEX="10" VALUE="%Pri_CarriedDateForFAX%" /></AMARRAY>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="Pub_FAXData(5)">%Excel1DataSet.F%</AMVARIABLE>
-----サンプルタスクここまで-----
なお、こちらのサンプルタスクは「%」が入ってくる場所がある程度特定できる場合にのみ有効である点に注意してください。
また、回避が必要な文字は「%」以外には特にありません。
(一般的な特殊文字(+, - など)の文字は、「%」で囲まれた部分でのみ式として扱われるため、平文であればエスケープする必要はありません)