過去の桐井戸端BBS (桐ver.9)
30613 メール本文を取り込むとき本文に書いてある¥で区切って異なる項目に分けて取り込みたい 桐道 2005/07/28-19:21
はじめまして。

桐9-2004にサンプルとして"桐てんぷDM"が付いておりますが、
この中に"メール受信.wfm"で受信ボタンを押し、
"受信ログ.tbl"にメールの情報を取り込む機能があります。

この際、メールの本文がテーブルの"本文"という列項目に
取り込まれるようですが、本文の内容を\で区切った場合に、
区切られて文字をテーブル内の異なる列項目に分けて取り込むことは可能なのでしょうか?

よろしくお願い致します。
30620 Re:メール本文の取り込みについて 幅田 2005/07/29-11:17
記事番号30613へのコメント
桐道さん
こんにちは。

>この際、メールの本文がテーブルの"本文"という列項目に
>取り込まれるようですが、本文の内容を\で区切った場合に、
>区切られて文字をテーブル内の異なる列項目に分けて取り込むことは
>可能なのでしょうか?

いったん[本文]という項目に取り込んでおいて、
別項目で計算式を設定し、
#部分列や#文字位置などの関数を使って、
¥で区切って文字列を分け、その別項目に
入れることはできると思いますが、

¥の数だけ、項目が必要になるのですが、
本文に¥がいくつかるか判明出来ない場合、
その別項目をいくつ作ればよいか
わからないと思います。

区切り文字としての¥以外に、普通の本文の中に
¥の文字が使われた場合どうするか。
などの問題もあると思います。

30632 Re:メール本文の取り込みについて 桐道 2005/07/31-09:27
記事番号30620へのコメント
幅田様
ご回答ありがとうございます。

>¥の数だけ、項目が必要になるのですが、
>本文に¥がいくつかるか判明出来ない場合、
>その別項目をいくつ作ればよいか
>わからないと思います。

本文に入ってくる項目数が決まっている場合
(\の数が決まっている場合)は可能となりますでしょうか?
どうもメール受信.Kevの中で

CC=[CC]、宛先=[宛先]、本文=[本文]、通番=1、\

という記述が38行目にありますが、
この部分を参考にアレンジ出来ないかと考えております。
しかしここで行き詰っております。

>区切り文字としての¥以外に、普通の本文の中に
>¥の文字が使われた場合どうするか。
>などの問題もあると思います。

本文中に \ の文字が使われた場合については、
想定しておりませんでした。
そのケースについては、この課題がクリア出来ましたら、
別途考えたいと思います。

よろしくお願い致します。
30633 Re:メール本文の取り込みについて 悲しげ 2005/07/31-13:09
記事番号30632へのコメント
ひとつの案です(試した訳ではありません)。

>本文中に \ の文字が使われた場合については、
>想定しておりませんでした。

については、No.30613で

>本文の内容を\で区切った場合に、

とあることから、区切りとして「\」を使うかどうかの決定権が
もし桐道さんの側にあるのなら、区切り文字を「\」ではなく、
一般に使われがたい文字(例「〓」「¶」「Ξ」「ξ」等)を
当てると云う方法も有り得ます。何しろ「\」は日本円の金額を
表す際に多用されますからね。

次、項目追加の件。kevの中味を見ていないので外しているかもしれませんが、"受信ログ.tbl"の項目の並びを
いじらない方が無難なのだとしたら、項目を後ろに追加する方法も考えられます。
後ろに追加するのなら、項目並びを気にすることもなく、
項目数は200以上は用意できるかもしれません(1レコードの
トータル文字数は4000文字以下である必要がありますが)。
で、増設各項目の項目計算式は
[本文0] #文字置換(#文字置換([本文],",","φ"),"〓",",")
[本文1] #文字置換(#対応文字列([本文0],1),"φ",",")
[本文2] #文字置換(#対応文字列([本文0],2),"φ",",")
[本文3] #文字置換(#対応文字列([本文0],3),"φ",",")
  ・・・・・・・・
[本文n] #文字置換(#対応文字列([本文0],n),"φ",",")
  ・・・・・・・・
[本文240] #文字置換(#対応文字列([本文0],240),"φ",",")

※上記は[本文]の区切り文字を「〓」とした場合です。区切り数が
不定な場合には#対応文字列関数を使うのが便利です。そのために、
「〓」を半角カンマに置換して切り取り作業を実行させています。
但しその前にデータ本文中に既存かもしれない半角カンマを、一旦
別な文字「φ」に置換(保護)しておいて、本文切り取り作業成就
後にもう一度半角カンマに戻しています。
※項目計算式ではなく、非計算項目として項目置換でも可能。置換
条件に登録しておいて。


30634 Re:メール本文の取り込みについて 悲しげ 2005/07/31-13:20
記事番号30633へのコメント
補足です。

No.30632
>本文に入ってくる項目数が決まっている場合

増設項目をそこまでにすればよいと思います。
「\」(?)が20個なら、項目は[本文20]までですね。
この場合、もし区切りが21以上有った場合には、21以降の値は取得しません。
なお#対応番号関数では、該当する値が存在しない場合、
未定義を返しますから、念のため若干余裕を持たせておくことも可です。
つらつら観ずるに、一番のネックは「\」です。(^^;)

30677 Re:メール本文の取り込みについて 桐道 2005/08/04-09:15
記事番号30634へのコメント
悲しげさん、こんいちは。
ご回答ありがとうございます。

>で、増設各項目の項目計算式は
>[本文0] #文字置換(#文字置換([本文],",","φ"),"〓",",")
>[本文1] #文字置換(#対応文字列([本文0],1),"φ",",")
>[本文2] #文字置換(#対応文字列([本文0],2),"φ",",")
>[本文3] #文字置換(#対応文字列([本文0],3),"φ",",")
>  ・・・・・・・・
>[本文n] #文字置換(#対応文字列([本文0],n),"φ",",")
>  ・・・・・・・・
>[本文240] #文字置換(#対応文字列([本文0],240),"φ",",")

上記の作成して頂いた式をテーブル定義で項目計算式に当てたところ、
問題なくメール本文内の各項目を、取り込むテーブル内の必要な列項目に
取り込むことが出来ました。ありがとうございます。

この案でひとつご質問があるのですが、
この計算式をテーブルで定義するのではなく、
イベント内に記述して処理をすることは出来るのでしょうか?
(もともとそのような提案でしたらごめんなさい)
この式をそのままイベント定義で入力して、実行したらエラーになってしまったので…

何か分かりましたら、よろしくお願い致します。

30698 Re:メール本文の取り込みについて 悲しげ 2005/08/04-20:56
記事番号30677へのコメント
>この計算式をテーブルで定義するのではなく、
>イベント内に記述して処理をすることは出来るのでしょうか?

その点も#30633で

>※項目計算式ではなく、非計算項目として項目置換でも可能。置換
>条件に登録しておいて。

と書いておきました。
kev内の一括処理コマンドの記述としてなら、次のような感じでしょう。
(もちろん項目増設した上で)

 置換 [本文0]=#文字置換(#文字置換([本文],",","φ"),"〓",",")\
   ,[本文1] #文字置換(#対応文字列([本文0],1),"φ",",")\
   ,[本文2] #文字置換(#対応文字列([本文0],2),"φ",",")\
   ,[本文3] #文字置換(#対応文字列([本文0],3),"φ",",")\
   ,  ・・・・・・・・\
   ,[本文n] #文字置換(#対応文字列([本文0],n),"φ",",")

あるいは、上記置換を表の置換条件「ほげほげ」に登録しておいてから

 置換 条件名="ほげほげ",終了状態=&実行リターン

のようにする方法もあります。

戻る