SalesforceのMashmatrix Sheetを使用してみた

## 初めに
本記事はSalesforceの開発者向けの記事となります。
Salesforceの組込みパッケージの「Mashmatrix Sheet」を利用してみたので使い方を記事にします。

【こんな方にお勧め】
・SalesforceでExcelの様なUIを提供したい
・データを手軽にメンテナンスしたい。DataLoaderは面倒だ
・DataTableなんか使いたくない。Visualforce/aura/LWCでコーディングなんてまっぴら。SalesforceなんだからGUIで手軽に設定で開発したい

## Mashmatrix Sheetとは
Mashmatrix Sheetは、[Mashmatrix社](https://www.mashmatrix.co.jp/)が提供するSalesforceデータをExcelのように閲覧・編集できる一覧インターフェースです。検索や絞り込み・並べ替えといった操作はもちろん、一括編集やスクロールヘッダ固定など、Excelでお馴染みの操作感でSalesforceのデータを取り扱えます。

[Mashmatrix Sheet]
![Mashmatrix](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/4577c516-9934-ecb2-72c2-fb37946395ee.jpeg)

## Mashmatrix Sheetの特長
Mashmatrix Sheetの特徴は、以下のとおりです。
- Excelと同じように、Salesforceデータをシートに表示・編集できます。
- 検索や絞り込み・並べ替えといった基本的な操作はもちろん、一括編集やスクロールヘッダ固定など、Excelでお馴染みの操作感でSalesforceのデータを取り扱えます。
- 画面分割や連動などの機能を利用することで、複数のSalesforceオブジェクトのデータをまとめて管理できます。
- Salesforce管理者権限がなくても、シート内にデータを入力保存できる列を追加できます。

Mashmatrix Sheetは、以下のようなケースに役立ちます。

- SalesforceのデータをExcelのように閲覧・編集したい
- 複数のSalesforceオブジェクトのデータをまとめて管理したい
- Salesforce管理者権限がなくても、シート内にデータを入力保存したい

## Mashmatrix Sheetのインストール方法
Mashmatrix Sheetのインストール方法は、以下のとおりです。

AppExchangeサイトにアクセスします。

- 「検索」ボックスに「Mashmatrix Sheet」と入力して検索します。
- 「Mashmatrix Sheet」のページに表示されている「今すぐ入手」ボタンをクリックします。
- Salesforce管理者のアカウントでログインします。
- インストール実行画面で、インストールする組織の情報が正しいことを確認します。
- 「管理者のみに公開」を選び、インストールを続行します。(※すべてのユーザに公開でも良いです)
![Mashmatrixのインストール](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/38366f20-fd0d-b3de-db89-f37075e08f24.jpeg)

## Mashmatrix Sheetの機能

Mashmatrixの機能は多岐にわたるので詳しくは[本家サイト](https://www.mashmatrix.co.jp/service/)を参照下さい。
主な機能は以下の様なものがあります。

- 列固定/自由なスクロール
大量のデータも縦横方向に自由にスクロールできます。横スクロール時にもレコードの情報を見失わないよう、左端の列を固定するよう指定できます。
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/a2480356-4b6a-fc3b-e791-b6a18ccf4e22.png" alt="Mashmatrix 列固定/自由なスクロール" width=50%>

- 直接編集/一括編集
閲覧しているデータをそのまま編集可能。選択リスト項目はプルダウンで、参照項目はルックアップ形式でデータを選べます。さらにキーボードショートカットを利用して、コピーアンドペーストでデータを一括更新することも可能です。
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/7424db43-8696-4922-81d3-7a6e3a82327a.png" alt="Mashmatrix 直接編集/一括編集" width=50%>

- フィルタ/ソート
列のヘッダにあるメニューから直接フィルタの設定が可能。むずかしい検索式を考えることなく、即座に条件にあったデータを取得することができます。ソート設定は一列だけでなく複数の列に対しても設定でき便利です。
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/787321cf-7c6f-1970-1c12-d64ab0962647.png" alt="Mashmatrix フィルタ/ソート" width=50%>

- レコードの新規作成/複製
選択したレコードをコピーして貼付けることで、簡単にレコードを複製して作成できます。もちろん新しいレコードを最初から作成することも可能です。
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/2675d1ce-b88d-2fe6-5604-3ae77eba472b.png" alt="Mashmatrix レコードの新規作成/複製" width=50%>

- 埋め込みシート
作成したブック／シートをレコードの詳細画面に埋め込んで配置できます。レコードのIDで絞り込みができるので高機能な関連リストとして利用できます。
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/a824bd71-e316-382a-c5a8-69959470f9d5.png" alt="Mashmatrix 埋め込みシート" width=50%>


## Mashmatrix Sheetの設定方法

Mashmatrixの設定方法は[Mashmatrix Sheet ユーザガイド](https://docs.mashmatrix.com/mashmatrix-sheet/v/ja/)を参照して下さい。

Mashmatrix Sheetの基本の設定のみ参考に記載します。

1. サイドバーの下部にある、「＋（新規ブック作成）」ボタンをクリックします。
![spaces_SWZRGa6LSqXSoF8LOLtb_uploads_git-blob-b61f177ce28b85a99cde5aa8de292a7906c0a496_fig057.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/53ebce5b-a60f-2d07-64ff-e97ac7568664.png)

1. 表示されたダイアログ内にSalesforceのオブジェクト一覧が表示されるので、ブック内のシートに表示したいオブジェクトを選択します。
![spaces_SWZRGa6LSqXSoF8LOLtb_uploads_git-blob-e70bae9381ad7157f1b685495435a5fe9aa4536e_fig058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/5208846e-510f-bf85-03d2-c5b80aba88fd.png)

1. ダイアログ右下に表示されている「作成」ボタンをクリックします。
1. ブックのシートタブで、ブックに含まれるシート全体の表示設定を変更できます。具体的には、シートの並び順や、表示・非表示の切り替え、および画面分割されている場合は領域（エリア）間での移動、さらに領域ごとのシートの表示方法の設定が可能です。

![bookの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540922/3367aef5-a1d3-3f59-412c-5ba0dc482548.png)

## Mashmatrix Sheetを使った感想
### Mashmatrix Sheetの良いところ
- 設定が簡単（プログラマで無くても簡単に設定が出来る）
- Excelと同じ操作感でSalesforceデータを閲覧・編集できる
- Salesforce管理者権限がなくても、シートのカスタマイズが出来るので、データ分析やレポート作成などの業務を非管理者ユーザーでも行うことができる。
- Salesforceの画面に埋め込める。関連リストでは一覧表示の列数に制限があるがMashmatrixなら関連リスト以上の列数を表示出来る。

### Mashmatrix Sheetのあまり良く無いところ・注意点
- ロードに時間がかかる
  １画面に複数のMashmatrix Sheetを埋め込むとロードに時間がかかるので、１画面に複数のMashmatrix Sheetを埋め込むのはお勧めできない
- 検索件数に上限がある
最大1万件まで。但し列数が多いと1万件も表示出来ない。
- エラーメッセージが英語
どうもSalesforceのAPIが返す英語のエラーメッセージを直接表示している様で、権限エラーなどのエラーが全て英語で表示される
- 数式でフィルタすると検索結果がおかしくなる
Mashmatrix Sheet上に数式列を作成出来るが、この数式列でフィルタすると検索結果がおかしくなる。
原因は検索件数が最大1万件の縛りのためで、サーバー側で1万件まで絞った後に、クライアント側（Mashmatrix Sheet側）の数式でフィルタされるので1万件で絞ったものに対してしか絞り込みがされない。
フィルタを使う場合はSalesforceのオブジェクトに数式を作りそれでフィルタするとサーバ側でフィルタされるので上記事象を回避できる
- 削除ボタンなどデフォルトのボタンはカスタマイズ出来ない
カスタムボタンは作れるが更新や削除のボタンはデフォルトなのでカスタマイズが出来ない。削除する前にメッセージを出したいとかそういうことが出来ない。
- **Grep出来ない(これかなり痛い)**
Mashmatrix Sheetはバイナリなのでメタデータと違ってGrepが出来ないです。大規模システムの場合、Grep調査出来ないのってかなり辛いです。バイナリではなくてXML形式とかで情報持っていると良かったな・・・。
- お金がかかる（当たり前ですが・・・）

Mashmatrix Sheetを使った感想はとにかく手軽でした。
DataTableで頑張れば似たようなことは出来ますが、Mashmatrix Sheetの方が開発はとても楽です。
ただ、ちょっとロードに時間がかかるのと表示件数がSalesforceのガバナ上限より低いのがネックです。
エンドユーザが表示性能や表示件数を許容できるならMashmatrix Sheetの利用を進めるのはありかなと思いました。