初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-09-08 13:40:50

yamakawa
Member

URLを開くを使用したメールに添付ファイルをつけたい

FileMaker Ad 14 / Windows7

いつもお世話になっております。

表題の件になりますが、
現在FileMakerでスクリプトの「メールを送信」を使用して各担当へメールを作成する機能を実装しておりましたが、
PCがWin7からWin10へと替わり、オフィスは32bitを使用するため「メールを送信」を使用すると
「サーバ使用中:他のプログラムがビジー状態のため、この作業を完了することができません」ダイアログが
表示されるため、「メールを送信」から「URLを開く」へ切り替えを行いました。
※オフィスのbit数ですが、客先都合のため変更は厳しいかたちとなります。

その中であるファイルについてはExcelファイルをメールに添付しているものもあり、
「メールを送信」であればファイル添付で指定ができるのですが、
「URLを開く」の場合はどのように設定すればよろしいのでしょうか?

というよりか、そもそも出来るのでしょうか?

ご教示のほどお願いいたします。

Offline

#2 2017-09-08 15:20:42

Hiro
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

mailto: スキーマによるメール送信かと思いますが、
そのオプションにファイル添付はありませんので、不可です。

Offline

#3 2017-09-08 15:49:55

yamakawa
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

Hiro wrote:

mailto: スキーマによるメール送信かと思いますが、
そのオプションにファイル添付はありませんので、不可です。

Hiroさん、ご返事ありがとうございます。

そうなんですね。。。
文章だけであればmailto:スキーマで大丈夫ですが、
ファイル添付をさせる場合は別の方法を検討しないといけないんですね。

Offline

#4 2017-09-08 15:51:45

qb_dp
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

カンタンなのは、FileMakerを32bitにすることでしょう。

別の方法では、PowerSehllを使用すれば、柔軟にOutlookのメールが作成できます。

スクリプト例:(タイトル・本文などは、計算式で置き換えて下さい。)

Event を送信 [「aevt」; 「odoc」;
"powershell  -windowstyle hidden -Command \"
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItem(0);
$Mail.Display();
$Mail.To = 'メールアドレス';
$Mail.Subject = 'タイトル';
$Mail.Body ='本文';
$Mail.Attachments.Add('C:\添付ファイルパス.png');
add-type -AssemblyName microsoft.VisualBasic;
add-type -AssemblyName System.Windows.Forms;
    $ps = Get-Process | Where-Object {$_.Name -eq 'OUTLOOK'};
    foreach($process in $ps){
        if($process.MainWindowTitle -ne '') {
            if($process.MainWindowTitle -match 'メッセージ') {
            [Microsoft.VisualBasic.Interaction]::AppActivate($process.ID);
            }
        }
    }
\""
]


※メールメッセージを作成するだけなら

$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItem(0);
$Mail.Display();
$Mail.To = 'メールアドレス';
$Mail.Subject = 'タイトル';
$Mail.Body ='本文';
$Mail.Attachments.Add('C:\添付ファイルパス.png');

ココまでで大丈夫です。
その後の add-type -AssemblyName microsoft.VisualBasic;.... は、
Outlookのウインドウを前面に出すためのコードです。

Offline

#5 2017-09-08 15:56:06

yamakawa
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

qb_dp wrote:

カンタンなのは、FileMakerを32bitにすることでしょう。

別の方法では、PowerSehllを使用すれば、柔軟にOutlookのメールが作成できます。

スクリプト例:(タイトル・本文などは、計算式で置き換えて下さい。)

Event を送信 [「aevt」; 「odoc」;
"powershell  -windowstyle hidden -Command \"
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItem(0);
$Mail.Display();
$Mail.To = 'メールアドレス';
$Mail.Subject = 'タイトル';
$Mail.Body ='本文';
$Mail.Attachments.Add('C:\添付ファイルパス.png');
add-type -AssemblyName microsoft.VisualBasic;
add-type -AssemblyName System.Windows.Forms;
    $ps = Get-Process | Where-Object {$_.Name -eq 'OUTLOOK'};
    foreach($process in $ps){
        if($process.MainWindowTitle -ne '') {
            if($process.MainWindowTitle -match 'メッセージ') {
            [Microsoft.VisualBasic.Interaction]::AppActivate($process.ID);
            }
        }
    }
\""
]


※メールメッセージを作成するだけなら

$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItem(0);
$Mail.Display();
$Mail.To = 'メールアドレス';
$Mail.Subject = 'タイトル';
$Mail.Body ='本文';
$Mail.Attachments.Add('C:\添付ファイルパス.png');

ココまでで大丈夫です。
その後の add-type -AssemblyName microsoft.VisualBasic;.... は、
Outlookのウインドウを前面に出すためのコードです。

qb_dpさん、ご返事ありがとうございます。

自分の認識が間違っていたら申し訳ございませんが、Windows10に対して
32bitのFileMakerをインストール出来るのでしょうか?

PowerSehllの方法、ありがとうございます。
こちらでもテストで作成してみます。

Offline

#6 2017-09-08 16:11:06

qb_dp
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

Windows10(64bit)にFileMaker14(32bit)をインストール出来ます。

powershellも使えれば便利ですよ。
powershell の方が柔軟にメールメッセージが作れます。HTMLメールとか複数添付ファイルとか。

Offline

#7 2017-09-09 13:17:41

nori
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

qb_dp様

横からすみません。
このpowershellが使えると思い、早速コピペしましたが

$Mail.To = 'メールアドレス';
$Mail.Subject = 'タイトル';
$Mail.Body ='本文';

この部分がうまくいかないです。アウトルックは立ち上がって添付メールも添付されていますが
宛先、タイトル、本文が反映されません。
宛先、タイトル、本文は該当のレイアウトにあるフィールドから拾う予定です。
お手数ですが、ご教示頂けると幸いです。

環境:Win7 FMPro15

Last edited by nori (2017-09-09 13:18:16)

Offline

#8 2017-09-09 21:59:11

qb_dp
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

どんな計算式を書いていますか?

Offline

#9 2017-09-11 11:41:08

nori
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

qb_dp wrote:

どんな計算式を書いていますか?

返信が遅くなり申し訳ありませんでした。
下記のパターンと、フィールドA、フィールドB、フィールドCを変数に入れてから
Eventを送信するパターンで試しましたが、ダメでした。
添付ファイルに関しては、デスクトップのファイルを指定していますが、他の部分が
解決したらフィールドDのオブジェクトフィールドからテンポラリフォルダにでも一度
出してから添付しようと思っています。

powershellに関して全く無知なので、見当はずれな事をしているかもしれませんが
宜しくお願い致します。

"powershell  -windowstyle hidden -Command \"
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItem(0);
$Mail.Display();
$Mail.To = テーブルA::フィールドA;
$Mail.Subject = テーブルA::フィールドB;
$Mail.Body = テーブルA::フィールドC;
$Mail.Attachments.Add('C:\Users\ユーザー名\Desktop\テスト.pdf');
add-type -AssemblyName microsoft.VisualBasic;
add-type -AssemblyName System.Windows.Forms;
    $ps = Get-Process | Where-Object {$_.Name -eq 'OUTLOOK'};
    foreach($process in $ps){
        if($process.MainWindowTitle -ne '') {
            if($process.MainWindowTitle -match 'メッセージ') {
            [Microsoft.VisualBasic.Interaction]::AppActivate($process.ID);
            }
        }
    }
\""

Offline

#10 2017-09-11 12:06:21

qb_dp
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

PowerShell で変数に文字を設定するには、「"」ダブルクォーテーション または、「'」シングルクォーテーション で包む必要があります。
×
$Mail.To = テーブルA::フィールドA;

$Mail.To ='" & テーブルA::フィールドA & "';

他の部分も上記の例のように修正しましょう。
FileMakerでの 文字列とフィールド値の連結方法の学習をおすすめします。

計算式について : https://fmhelp.filemaker.com/help/16/fm … as.html%23
式の文字列定数と特殊文字の識別 : https://fmhelp.filemaker.com/help/16/fm … rs.html%23

Offline

#11 2017-09-11 12:30:47

nori
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

qb_dp 様
うまく行きました!有難う御座いました。
もっと勉強します!

yamakawa 様
横から失礼いたしました。

Offline

#12 2017-09-11 14:05:43

qb_dp
Member

Re: URLを開くを使用したメールに添付ファイルをつけたい

powershellを利用する場合の補足
改行や「"」ダブルクォーテーションがあった場合、コマンドライン引数・PowerSehll・FileMaker それぞれの文字列のエスケイプ処理が絡んでややこしいと思います。以下のような式がおすすめです。

Let([
¢PS="powershell  -windowstyle hidden -Command \"
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItem(0);
$Mail.Display();
$Mail.To = '{MailTo}';
$Mail.Subject = '{Subject}';
$Mail.Body =\\\"{Body}\\\";
$Mail.Attachments.Add('{Attachments}');
add-type -AssemblyName microsoft.VisualBasic;
add-type -AssemblyName System.Windows.Forms;
    $ps = Get-Process | Where-Object {$_.Name -eq 'OUTLOOK'};
    foreach($process in $ps){
        if($process.MainWindowTitle -ne '') {
            if($process.MainWindowTitle -match 'メッセージ') {
            [Microsoft.VisualBasic.Interaction]::AppActivate($process.ID);
            }
        }
    }
\""
];
Substitute ( ¢PS ; 
		["{MailTo}" ; テーブルA::To]
	;	["{Subject}" ; テーブルA::Subject]
	;	["{Body}" ; Substitute ( テーブルA::Body ; ["¶" ; "`n"] ; ["\"" ; "`\\\""]  )]
	;	["{Attachments}" ; テーブルA::Attachments]
	 )
)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 599.16 KiB (Peak: 616.07 KiB) ]