プログラマ38の日記

主にプログラムメモです。

Java: int から byte と byte から int の変換

急に忘れてしまうので、備忘メモ

 

intからbyteは、キャストする。

    int intval1 = 255;
    
    byte byteval1 = (byte)intval1;

 

byteからintは、ビット演算または、Byte.toUnsignedInt を使う

    byte byteval2 = -1;
    
    int intval2 = byteval2 & 0xFF;
    
    int intval3 = Byte.toUnsignedInt(byteval2);

 

Javaのファイル操作で read の結果が int で そのintの値をbyteで扱いたいときにいちいち調べたりしてしまいます。。 そろそろファイル操作のreadの結果をbyteで返すメソッド追加されないかなー。 なんで int で返ってくるんだろ。。

雑記: はてなのHTML編集ではまったこと( の文字)

色々なソースコードを記載してきましたが、自分の記載したソースコードをコピーして使おうとして気がつきました。
html編集で「 」にすると文字コードで「C2A0」という文字で表示されるんですね。。


わざわざ半角スペースを「 」に変換して貼り付けていたのが仇となりました。
今までのせてきたものは全部直そうと思います。
良い機会だから<code></code>ではさむようにしとこ。

150程度しか記事はないけど意外と大変です。。

CSV: Excelで開く際に、ゼロサプレスや日付変換を回避する

CSVファイルは、大体Excelに関連付けがされていてダブルクリックするとExcelで開きます。
Excelで中身を確認できるのはとても便利ですが、次のようになってしまい使いづらいことがあります。
CSVの文字は「0001」なのに、Excelでは「1」となる
CSVの文字は「2000-01」なのに、Excelでは日付の「2000/1/1」となる

この現象は数式扱いにすると回避できます。


テキストが変換されてしまうCSVの中身

"0001","2000-01"

Excelで開いた場合の表示

f:id:crmprogrammer38:20180711102325p:plain
ゼロサプレスされるのと、勝手に日付変換されてしまいます。


テキストを数式扱いにしたCSVの中身

="0001",="2000-01"

Excelで開いた場合の表示

f:id:crmprogrammer38:20180711102436p:plain

セルは数式の値でcsvの文字列がそのまま表示されます。

 

気をつけること

ただし、数式扱いにしなければ正しく表示される値でも、数式扱いにすると表示がおかしくなる場合があります。

おかしくなるのは、文字列中にカンマ(,)や改行( )がはいる場合です。


通常のCSV

"000,000,000","AAAAA
BBBBB"

Excel表示

f:id:crmprogrammer38:20180711102214p:plain
正しく表示されます

 

数式に変更

="000,000,000",="AAAAA
BBBBB"

Excel表示

f:id:crmprogrammer38:20180711102123p:plain
表示が崩れてしまいます。


この現象を回避するため、テキスト内のカンマと改行も数式で表現しておく必要があります

="000" & char(44) & "000" & char(44) & "000",="AAAAA" & char(10) & "BBBBB"

 ※カンマはchar(44) で、改行はchar(10)で表現しています。

Excel表示

f:id:crmprogrammer38:20180711102106p:plain

最後に

テキストを数式扱いしたCSVは連携用途で扱えません、Excelでの表示用途に限定したやり方になります。

業務ユーザにCSVを配布した際にゼロサプレスされては困る、勝手に日付変換されたら困る項目に限定して数式扱いにするのがいいのかなと思います。

Salesforce: レイアウト項目一覧の取得Excelマクロでミニページレイアウトの表示を追加しました

レイアウトの一覧とレイアウト項目 を取得するExcelマクロを以前作成しました。

レイアウト項目は、詳細項目と関連リストを対象としていたのですが、ミニページレイアウトの項目の追加しました。

 

ダウンロードはこちら からになります。

 

次のようにレイアウト項目でミニページレイアウト項目とミニページレイアウトの関連リストを表示を追加しました。

 

f:id:crmprogrammer38:20180620195657p:plainf:id:crmprogrammer38:20180620195747p:plain

 

[前回作成時の記事]

crmprogrammer38.hatenablog.com

 

最後に

ページレイアウトを設定する時に、ミニページレイアウトの設定はあまり深く考えないで項目を置いておくことが多いです。

そして、レコードタイプの追加にあわせてレイアウトを増やしていくと、見直し作業が意外と手間な時があります。

そんな時に使えるかなーと思います。

といっても、メタデータAPI名を一覧で表示しているだけで、ラベルの表示はしてなくてあまり使いやすくはないですけどね。

Salesforce: Lightningレコードページの割り当てをリリースする

結論として、Lightningレコードページの割り当てをリリースするには、「オブジェクト」「Lightning アプリケーション」をリリースする必要があります。

 

メタデータでLightningレコードページの割り当てがどこに記載されているかを確認したところ、オブジェクトとLightning アプリケーション(メタデータのCustomApplication)に情報が記載されていました。

 

メタデータの詳細

まず、Lightningレコードページの割り当ては次の内容です。

f:id:crmprogrammer38:20180616223338p:plain

  • 組織のデフォルト
  • アプリケーションのデフォルト
  • アプリケーション、レコードタイプ、プロファイル

表示の優先度は下からなので、「アプリケーション、レコードタイプ、プロファイル」を指定していれば、組織のデフォルトより優先されて表示されます。

 

上記の内容はメタデータ上では次のようになっています。

 

組織のデフォルト(メタデータ:オブジェクト)
    <actionOverrides>
        <actionName>View</actionName>
        <comment>Action override created by Lightning App Builder during activation.</comment>
        <content>LightningレコードページのAPI</content>
        <formFactor>Large</formFactor>
        <skipRecordTypeSelect>false</skipRecordTypeSelect>
        <type>Flexipage</type>
    </actionOverrides>

 

アプリケーションのデフォルト(メタデータ:アプリケーション)
    <actionOverrides>
        <actionName>View</actionName>
        <comment>Action override created by Lightning App Builder during activation.</comment>
        <content>LightningレコードページのAPI</content>
        <formFactor>Large</formFactor>
        <skipRecordTypeSelect>false</skipRecordTypeSelect>
        <type>Flexipage</type>
        <pageOrSobjectType>オブジェクトのAPI</pageOrSobjectType>
    </actionOverrides>

 

 アプリケーション、レコードタイプ、プロファイル(メタデータ:アプリケーション)
    <profileActionOverrides>
        <actionName>View</actionName>
        <content>LightningレコードページのAPI</content>
        <formFactor>Large</formFactor>
        <pageOrSobjectType>オブジェクトのAPI</pageOrSobjectType>
        <recordType>オブジェクトのAPI.レコードタイプのAPI</recordType>
        <type>Flexipage</type>
        <profile>プロファイル名</profile>
    </profileActionOverrides>

 

最後に

今までのプロファイル・レコードタイプ別のレイアウト割り当てで、ページの項目の表示を変更した後に、さらに、アプリケーション・レコードタイプ・プロファイルでLighningレコードページで表示の使い分けができて便利です。

が、リリース時の確認も本当に大変だなーと思いました。(アプリケーションをリリースしないとなると手動になってしまいますし)

Salesforce: オブジェクト情報取得マクロとメタデータエクスポート取得ツールをバージョンアップしました(APIVer43)

SalesforceがSummer18(APIVer43)にバージョンアップしたので、次のツールのバージョンをあげました。

 

Excel VBA : オブジェクト一覧と項目一覧の取得マクロ

 

Java : メタデータエクスポートツール

 

使い方は前回の内容から変更はありません。 

crmprogrammer38.hatenablog.com

  

crmprogrammer38.hatenablog.com

 

Api43から、SOAP APIでオブジェクトの数式項目「空白項目の処理(formulaTreatNullNumberAsZero)」を項目の属性として取得できるようになったのでオブジェクト項目の一覧マクロで表示を追加しました。

 

他に、excelマクロには表示していませんがaiPredictionFieldという属性も追加されています。これからAI用の項目も追加されていくのか楽しみです。

 

また、Api43で次のオブジェクトなどが追加されています。

・アプリケーション定義[AppDefinition]
・タブ定義[TabDefinition]
・アプリケーションタブメンバー[AppTabMember]

 

標準のアプリケーションの物理名などがわかりやすくなったなーと思いました。

Salesforce: プロファイルのIPアドレス制限の説明がメタデータでエクスポートできるようになってました

ついこの間まで、IPアドレス制限の説明はメタデータで取得できませんでした。

ですが、現時点(2018/5/15)で取得できるようになっていました。

 

画面の登録内容

f:id:crmprogrammer38:20180516093726p:plain

 プロファイルのメタデータの内容

f:id:crmprogrammer38:20180516094100p:plain

 

プロファイルのメタデータのテキストを使えば、今どの範囲に開放しているのかと、その説明が取得できるようになります。個人的にちょっと嬉しいです。

 

※補足として、Summer18(Apiバージョン43)になった環境でIPアドレス制限の説明が取得できるようになっているようです。
(まだSpring18(Apiバージョン42)の環境では取得できませんでした。)