CSV添付機能(v4.2.2~)
入力内容を1行レコードとしてCSVファイルを作成し、それをメールに添付するための機能です。
何かしら集計であったり応募であったりして、サーバ上にデータを残したくない場合でかつExcelでの集計が必要な場合ってよくありますよね?そんな場合にオススメなのがCSV添付機能です。指定した任意の入力項目をCSV化し、それをメールに添付して送ってきます。
まぁ用途は実際限られると思いますが、ちょっとご要望を頂いたので作成いたしました。
本機能を利用する場合、config.cgiの
#push @Modules,'csvatt';
の行頭のシャープを外し、configs/csvatt.cgiに設定を記述してください。
コメント欄
push @AttachedFiles,&_ATTACHED(’data.csv’,$_CSV);
という部分のdata.csvという部分がファイル名になります。ただ脆弱性になる可能性があるためご注意ください。
ファイル名を変更できるのは分かりました。追加の質問で申し訳ありませんが、
そのファイル名に、フォームで入力した「職員番号」などの値を指定することは可能でしょうか?
例えばフォームにて「1234」と入力したら、添付されるCSVのファイル名が「1234data.csv」になるように。もし、可能である場合はお教えいただけたら幸いです。有償になる場合は、その旨お伝えください。(メールの方に返信いただいても可)
どうぞよろしくお願いいたします。
の部分を
if(!($_POST{’職員番号’} =~ /[^0-9]/) && !$_POST{’職員番号’}){
push @AttachedFiles,&_ATTACHED("$_POST{’職員番号’}.csv",$_CSV);
}
else {
push @AttachedFiles,&_ATTACHED(’data.csv’,$_CSV);
}
とすることで希望の動作になるのではないかなぁと思います。
文字コードはUTF-8Nとしてください。
こちらの問題でしょうが、ご提示いただいたコードのままだと反映されなかったので、
条件の&&以下を削ったらファイル名に反映されました。(何かあってもこちらの責任ですが・・・)
これで、落としたファイルをフォルダに入れて、パワークエリで結合することができます。
本当にありがとうございました!
&& !$_POST{’職員番号’}
ではなく
&& $_POST{’職員番号’}
でした。(ビックリマークなし)
この部分では数字以外の文字が入っているかどうかをチェックする部分で、一応セキュリティ的に数字以外の場合は初期値のファイル名を指定するような処理にしてみました。
修正していただいたコードで思い通りの処理になりました。
半角数字以外は data.csv になるので、セキュリティ的にもばっちりです。
この機能けっこう需要があると思うのは私だけでしょうか?
検索しても他に見つからなかったので、とても助かりました。
本当にありがとうございました!
の行頭のシャープを外したのですが、CSVデータが添付されません。
他に何かすることはあるのでしょうか。
#push @Modules,’csvatt’;の#を外してcsv添付が使用できるようにしたのですが、設置者に届くメールにcsvが添付はされているのですが、内容が何も入力されていないようです。
どのように設定を行うとcsv添付ファイルの中に情報が入力されるようになるのでしょうか?
お手数ですがご教授いただければ幸いです。
ご迷惑をおかけしました。