みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker Ad 14 / Windows7
いつもお世話になっております。
表題の件になりますが、
現在FileMakerでスクリプトの「メールを送信」を使用して各担当へメールを作成する機能を実装しておりましたが、
PCがWin7からWin10へと替わり、オフィスは32bitを使用するため「メールを送信」を使用すると
「サーバ使用中:他のプログラムがビジー状態のため、この作業を完了することができません」ダイアログが
表示されるため、「メールを送信」から「URLを開く」へ切り替えを行いました。
※オフィスのbit数ですが、客先都合のため変更は厳しいかたちとなります。
その中であるファイルについてはExcelファイルをメールに添付しているものもあり、
「メールを送信」であればファイル添付で指定ができるのですが、
「URLを開く」の場合はどのように設定すればよろしいのでしょうか?
というよりか、そもそも出来るのでしょうか?
ご教示のほどお願いいたします。
Offline
mailto: スキーマによるメール送信かと思いますが、
そのオプションにファイル添付はありませんので、不可です。
Offline
mailto: スキーマによるメール送信かと思いますが、
そのオプションにファイル添付はありませんので、不可です。
Hiroさん、ご返事ありがとうございます。
そうなんですね。。。
文章だけであればmailto:スキーマで大丈夫ですが、
ファイル添付をさせる場合は別の方法を検討しないといけないんですね。
Offline
カンタンなのは、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
カンタンなのは、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
Windows10(64bit)にFileMaker14(32bit)をインストール出来ます。
powershellも使えれば便利ですよ。
powershell の方が柔軟にメールメッセージが作れます。HTMLメールとか複数添付ファイルとか。
Offline
qb_dp様
横からすみません。
このpowershellが使えると思い、早速コピペしましたが
$Mail.To = 'メールアドレス';
$Mail.Subject = 'タイトル';
$Mail.Body ='本文';
この部分がうまくいかないです。アウトルックは立ち上がって添付メールも添付されていますが
宛先、タイトル、本文が反映されません。
宛先、タイトル、本文は該当のレイアウトにあるフィールドから拾う予定です。
お手数ですが、ご教示頂けると幸いです。
環境:Win7 FMPro15
Last edited by nori (2017-09-09 13:18:16)
Offline
どんな計算式を書いていますか?
Offline
どんな計算式を書いていますか?
返信が遅くなり申し訳ありませんでした。
下記のパターンと、フィールド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
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
qb_dp 様
うまく行きました!有難う御座いました。
もっと勉強します!
yamakawa 様
横から失礼いたしました。
Offline
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
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 598.95 KiB (Peak: 615.85 KiB) ]