[Sitecore][SPE] SPE 使って、定期的にメールにてレポート
検証環境は次の通りです。
- Sitecore Experience Platform 9.0 rev. 180604 (9.0 Update-2)
- Sitecore PowerShell Extensions 5.0
概要:
よく、お客さんからいろいろなレポートが要求されるので、Sitecore Fast Queryをメインで使っていました。
一昨年より、SPEに切り替えてから、ずっと、SPEのみ使ってきました。今後よく使った簡単で便利なスクリプト
をメモ書きしていこうと思います。
SPE Sitecore PowerShell Extensions (SPE)
始めとして、Sitecore PowerShell Extensions を使って定期的にレポートをメールで送信するメモ書きをします。
昔、テレビで最大のインフォマーシャルキャッチフレーズを思い出し、 ”設定して忘れる ”のように、一度設定すれば、
いちいち確認しなくでも済す。今回、サイトコアのスケジューラーを使って、定期的にレポートを生成し、メールにて送る手順を書き留めます。
1.まず、管理しやすいようにカスタムスクリプトのフォルダを作成します。
これにて、このサイトに特有な変更であるかどうかを一目瞭然です。
2.スクリプトを追加します。毎週ごどに送るレポートを設定してみます。
3.スクリプトのセクションにてウィークリーレポートのスクリプトを設定。
4.ここにて直接スクリプトを書き、実行することもできますが、PowerShell ISEを使って編集することをお勧めです。
特にディバグとイミディエイトウィンドウの機能をしようすればスクリプトの作成を楽々!!
5.ウィークリーレポートのスクリプトを PowerShell ISE にて作成してみましょう。
まず、簡単なメールを送る関数を作成:
function SendEmail { Param( [bool] $UsingGmail, [string] $From, [string] $To, [string] $Subject, [string] $Body ) #ローカルの開発環境にてSMTPリレーサービスを使用できい場合が多く、 その際に手軽く使用できるGmailを使用するようにします。 if($UsingGmail) { $SMTPServer = "smtp.gmail.com"; $SMTPPort = "587"; $Username = "gmailのアドレス"; $Password = "gmailのパスワード"; $message = New-Object System.Net.Mail.MailMessage; $message.subject = $Subject; $message.body = $Body;d $message.to.add($To); $message.from = $From; $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort); $smtp.EnableSSL = $true $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password); $smtp.send($message) } else { $SendingServer = "relay.yourcompany.com" $SMTPMessage = New-Object System.Net.Mail.MailMessage $From, $To, $Subject, $Body $SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer $SMTPClient.Send($SMTPMessage) } }
- 次に、何かのレポートを生成し、メールにて送る。
今回簡単に特定のテンプレートを使用しているアイテムの特定なフィードの値をチェックしてみましょう。
よく、検索に使用するのは検索可能かどうかというチェックボックスが使用されます。
サンプルテンプレートにチェックボックスを追加し、スクリプトにて検索可能なアイテムの一覧を取得します。
スクリプト:
$path = "master:/sitecore/content/Home" $field = "Searchable"; $msg=""; $cnt = 1; Get-ChildItem -Path $path -Recurse | Where-Object { $_.Fields[$field].Value -ne $null -and $_.Fields[$field].Value -ne "" } | ForEach-Object { $msg+= "No." + $cnt + "`n" + " アイテム: " + $_.Name + "`n" + " ID: "+ $_.ID + "`n" + " パス: " + $_.FullPath + "`n" $cnt ++ } $summary="合計: "+$cnt+" 検索可能なアイテムがみつかりました。"; $summary+="`n"; $summary+=$msg; SendEmail -UsingGmail $true -From "sitecoredou@gmail.com" -To "sitecoredou@gmail.com" -Subject "検索可能なアイテムレポート ー 環境(QA)" -Body $summary;
ここでいったん走らせてみましょう。
- メールが受信できたところで、次にこれをサイトコアのスケジューラーを使って毎週ごどに配信するように設定します。
まず、カスタムフォルダを作成しましょう。
これにて今後バージョンアップデートの際に、このサイトに特有な変更であるかどうかを一目瞭然です。
ここで、毎週ごどに送るレポートのスケジュールを作成します。
スケジュールの設定で実行させたいスケジュールを設定します。
下記の例で毎週の月曜にに走らせるように設定します。
スケジュールのフォーマットをわかりやすい設定したい場合はこのモジュールを使用すればいい。
https://marketplace.sitecore.net/en/Modules/Sitecore_Shell_Wax.aspx
分かりやすいUIが提供され、簡単に設定ができます。
プロダクションの環境にてこれをインストールしたくないの場合はRAW値をつかって、テキストをコピーすればいい。
設定が完了したところで、実行してみましょう。
もし、エラーなく、そしてメールを受信したら、これにて設定完了です。
プロダクションの環境へ移す際に、サイトコアのパーケージを使うか、TDSまた、Unicornを使用すればいい。