Quantcast
Channel: tyoshikawa1106のブログ
Viewing all 1438 articles
Browse latest View live

SFDC:S1モバイル開発とVisualforceページへの遷移

$
0
0

S1アプリ側で画面遷移するときはsforce.one.navigateToURL()を利用します。

このnavigateToURLはVFページから別のVFページに遷移するときに利用できたっけ...と思って試してみました。


ちゃんと動きました。
f:id:tyoshikawa1106:20160226211254p:plain:w300


f:id:tyoshikawa1106:20160226211235p:plain:w300


SFDC:forceChatter:fullFeedタグを試してみました

$
0
0

Spring'16で新しく追加されたforceChatter:fullFeedタグを試してみました。少し特殊なタグでLightning Outでのみ利用できるみたいです。また、現時点ではベータ版となっているみたいです。
f:id:tyoshikawa1106:20160229204917p:plain

Release Notes


サンプルコードです。



まだベータ版のためかイマイチな部分もありましたが、次のようなことができました。

メンション機能

f:id:tyoshikawa1106:20160229205203p:plain:w300

f:id:tyoshikawa1106:20160229205212p:plain:w300

いいね機能

f:id:tyoshikawa1106:20160229205353p:plain

f:id:tyoshikawa1106:20160229205407p:plain

コメント機能

f:id:tyoshikawa1106:20160229205451p:plain

編集メニュー(レイアウト崩れあり)

f:id:tyoshikawa1106:20160229205607p:plain

削除

f:id:tyoshikawa1106:20160229205753p:plain

さらに表示リンク

f:id:tyoshikawa1106:20160229205937p:plain


だいたいこんな感じです。Google Chromeで確認してみたのですが、一部クリックしても動作しないボタンがありました。共有ボタンです。
f:id:tyoshikawa1106:20160229210104p:plain


一番重要なところじゃ...と思ったのですが、まだベータ版ということもあるので今はどんな感じか確認できればいいのかなと思います。もしかするとVisualforce以外から呼び出せば正常に動作するかもしれません。

D3プラグインのFloor Planを試してみました

$
0
0

マップの上に経路とかを表示できるD3 Floor Planの使い方について調べてみました。
f:id:tyoshikawa1106:20160301002811p:plain


参考になったサイトは以下の3つです。


実際に動くサンプルコードが見当たらなかったので調査ついでにつくってみました。


サンプルコード内で使用しているデータはJSON形式で読み込みますが、そのままだと次のようにエラーになってしまいます。
f:id:tyoshikawa1106:20160301001412p:plain


上記エラーを解決するためにNode.jsを利用しました。GitHubからサンプルファイル一式をダウンロードした後に次のコマンドでNodeの実行準備を行います。

$ npm init
$ npm install express --save
$ npm run start

これでlocalhost:8080にアクセスして動作確認ができると思います。
f:id:tyoshikawa1106:20160301001718p:plain:w300


利用時に必要なJSの読み込み内容は以下のとおりです。Zipファイルにはいろいろなファイルが用意されていますが、必要なのはD3.jsの読み込みとd3.floorplan.min.jsの読み込みだけでした。

<!-- D3.js -->
<script src="http://d3js.org/d3.v3.min.js"></script>
<!-- D3.js Floor Plan -->
<link rel="stylesheet" type="text/css" href="lib/d3-floorplan/d3.floorplan.css" />
<script src="lib/d3-floorplan/d3.floorplan.min.js"></script>


実際の処理は『d3-floorplan-sample/public/javascripts/sample.js』に記載してあります。基本利用できるのは以下のオプションです。

  • overlays: 図の上にレイヤーを表示
  • heatmap: 図の上に色を付ける
  • pathplot: 図の上に経路を表示
  • imagelayer: 図を表示


次のように初期化します。

var imagelayer = d3.floorplan.imagelayer();
var heatmap = d3.floorplan.heatmap();
var pathplot = d3.floorplan.pathplot();
var overlays = d3.floorplan.overlays().editMode(true);


ベースになる図の画像は以下のように設定します。(URLに画像のパスを設定)

//ベースとなる画像データの読み込み
mapdata[imagelayer.id()] = [{
  url: 'images/demo.jpg',
  x: 0,
  y: 0,
  height: 33.79,
  width: 50.0
}];


ヒートマップや経路などの設定は次のように行います。

//レイヤーの追加    
map.addLayer(imagelayer)
  .addLayer(heatmap)
  .addLayer(pathplot)
  .addLayer(overlays);
   
//ポリゴン、ヒートマップ、パスデータの読み込み   
d3.json("data/data.json", function(data) {
  mapdata[heatmap.id()] = data.heatmap;
  mapdata[overlays.id()] = data.overlays;
  mapdata[pathplot.id()] = data.pathplot;

  //フロアマップ表示
  d3.select("#demo").append("svg")
                    .attr("width", w)
                    .attr("height", h)
                    .datum(mapdata)
                    .call(map);
});


『d3.json("data/data.json" ....(略)』の部分でデモ用のデータを読み込んでいます。データはJSON形式になります。基本的にX座標とY座標の値がわかればいいみたいです。以下デモ用データの一部です。(詳細は『d3-floorplan-sample/public/data/data.json』)

"vectorfield": {
  "binSize": 3,
  "units": "ft/s",
  "map": [
    {"x": 18, "y": 21, "value": {"x": 4, "y": 3}},
    {"x": 21, "y": 21, "value": {"x": 3, "y": 3}},
    {"x": 18, "y": 24, "value": {"x": 1, "y": 2}},
    {"x": 21, "y": 24, "value": {"x": -3, "y": 4}},
    {"x": 24, "y": 24, "value": {"x": -4, "y": 1}}]
  },
"pathplot": [{
  "id": "flt-1",
  "classes": "planned",
  "points": [{"x": 23.8, "y": 30.6},{"x": 19.5, "y": 25.7},{"x": 14.5, "y": 25.7},{"x": 13.2, "y": 12.3}]
  }]
}


サンプルは公式サイトと同じようにつくっていますが、後はベースになる画像を用意してX座標とY座標を指定していく感じで利用できると思います。


最後にGitHub上にHerokuボタンも用意してみました。ボタンをクリックするだけでHeroku上で動作確認できると思います。
f:id:tyoshikawa1106:20160301005238p:plain


f:id:tyoshikawa1106:20160301005258p:plain

SFDC:承認履歴とSOQLクエリ

$
0
0

Salesforce標準機能のひとつ、承認申請の履歴情報を取得できるSOQLクエリの実行方法についてです。

f:id:tyoshikawa1106:20160302085653p:plain


承認履歴の情報は以下のオブジェクトに格納されています。


このうち、ProcessInstanceWorkitemとProcessInstanceStepの項目はProcessInstanceHistoryでまとめて取得できるみたいです。



ProcessInstanceHistoryの情報はProcessInstanceオブジェクトのサブクエリでまとめて取得できます。

SELECT Id, (SELECT Id, StepStatus, Comments FROM StepsAndWorkitems)
FROM ProcessInstance


ProcessInstanceNodeオブジェクトには日付情報などより詳細な情報が登録されています。このオブジェクトはサブクエリなどで取得できません。ProcessInstanceオブジェクトのIDなどを持っているのでそちらで紐付けます。


サンプルクエリです。
gist.github.com


これで一通りの必要な情報を取得できると思います。
f:id:tyoshikawa1106:20160302090657p:plain

f:id:tyoshikawa1106:20160302090752p:plain


ProcessInstanceHistoryの『OriginalActorId』は割当先、『ActorId』は承認者となっているみたいです。
ユーザIDがセットされていますが、クエリでユーザ名を紐つけることはできないみたいで、別にユーザ情報をMap変数か何かに準備して紐つける必要がありそうです。


システム管理者権限で強制的に再度承認申請を行ったりして次のようになっている場合は、ProcessInstanceレコードが2件存在している状態です。(確認していませんが却下→承認申請も同様だと思います。)
f:id:tyoshikawa1106:20160302091206p:plain


承認履歴とSOQLクエリの情報はこんな感じです。

SFDC:承認履歴とSOQLクエリ【改良版】

$
0
0

承認履歴とSOQLクエリということで、こういうブログを書きました。


Twitterでより良い方法について教えてもらったので、こちらで追記しようと思います。


承認ステップの日付情報を取得するためにProcessInstanceNodeオブジェクトの情報を取得しましたが、この日付部分はステップレコードの作成日の値と同じものでした。


そのため、次のクエリだけで必要な情報は取得できそうです。

public List<ProcessInstance> getProcessInstances(String targetObjectId) {
    return [
        SELECT
             Id
            ,CompletedDate
            ,LastActorId
            ,ProcessDefinitionId
            ,Status
            ,TargetObjectId
            ,(
                SELECT 
                     Id
                    ,ActorId
                    ,Comments
                    ,IsPending
                    ,OriginalActorId
                    ,ProcessInstanceId
                    ,ProcessNodeId
                    ,StepStatus
                    ,TargetObjectId
                    ,CreatedDate
                FROM
                    StepsAndWorkitems
                ORDER BY CreatedDate DESC
            )
        FROM
            ProcessInstance
        WHERE
            TargetObjectId =: targetObjectId
        ORDER BY CreatedDate DESC
        LIMIT 50
    ];
}


これを踏まえて簡単なサンプルをつくって確認してみました。ステップ名の表示とか細かい部分が不要な場合はこれで問題なさそうです。
f:id:tyoshikawa1106:20160302121400p:plain

f:id:tyoshikawa1106:20160302121412p:plain


サンプルコードです。


もうひとつ、割り当て先や承認者の項目(OriginalActorIdとActorId)はなぜクエリでユーザ名まで取得できないのかなと思っていたのですが、これについても教えてもらいました。承認者の割り当てではユーザだけでなくキューも指定することが可能です。
f:id:tyoshikawa1106:20160302123748p:plain


承認申請でキューを利用する場合は、キューオブジェクトの方にクエリを実行する必要があるので、状況に応じて考慮しておく必要があるみたいです。


ちなみにキューの名前はグループオブジェクトから取得できます。

キューオブジェクト

f:id:tyoshikawa1106:20160302212002p:plain

SELECT Id,QueueId,SobjectType FROM QueueSobject
グループオブジェクト

f:id:tyoshikawa1106:20160302212011p:plain

SELECT Id,Name,Type FROM Group WHERE Type= 'Queue'


承認履歴のクエリを実行するときですが、ポータルユーザやCommunityユーザではアクセスできないオブジェクトがあるので注意が必要です。
f:id:tyoshikawa1106:20160302212834p:plain


承認履歴で考慮が必要なのはこんな感じでした。

追記

StepStatus項目とSOQL

StepStatus項目を取得すると英語で取得されます。
f:id:tyoshikawa1106:20160302224946p:plain


標準画面では日本語なのでなんでだろうと思っていたのですが、選択リスト項目でトランスレーションワークベンチで日本語変換されているだけでした。


なのでtoLabel()を利用することで日本語に変換して取得できます。
f:id:tyoshikawa1106:20160302225100p:plain
f:id:tyoshikawa1106:20160302225209p:plain


取得後にIF処理判定したりする必要はありませんでした。

ProcessHistoryとoutputField

何かと便利なoutputFieldですが、ProcessHistoryオブジェクトはちょっと特殊な感じだし利用できないかなと自分でラッパークラスして対応しようと思いました。
f:id:tyoshikawa1106:20160302233145p:plain
f:id:tyoshikawa1106:20160302233158p:plain


・・・普通にoutputFieldで対応できたのでそっちの方がシンプルになりました。
f:id:tyoshikawa1106:20160302235241p:plain
f:id:tyoshikawa1106:20160302235254p:plain


特殊なオブジェクトの場合でoutputFieldがサポートされていないケースというのも見たことがあったのですが、承認履歴は普通にサポートされていたのでそちらで対応する方が簡単です。ユーザorキューがセットされるActorId項目も簡単に表示できて便利です。
f:id:tyoshikawa1106:20160302235446p:plain


GitHubのサンプルコードも直しておきました。


また、承認履歴情報は汎用的に利用できると思うのでVisualforceコンポーネントにしておくと良さそうです。教えて貰ったコードですが、こんな感じです。

<apex:page standardController="Account">
    <c:ApprovalHistoryComponent targetObjectId="{!Account.Id}"/>
</apex:page>
<apex:component controller="ApprovalHistoryController">
    <apex:attribute name="targetObjectId" type="Id" required="true" description="ProcessInstance.TargetObjectId" assignTo="{!targetObjectId0}"/>
    <apex:pageBlock mode="detail" title="承認履歴">
        <apex:pageBlockTable value="{!history}" var="e">
            <apex:column value="{!e.ProcessNode.Name}" headerValue="ステップ"/>
            <apex:column value="{!e.CreatedDate}" headerValue="日付"/>
            <apex:column value="{!e.StepStatus}"/>
            <apex:column value="{!e.OriginalActorId}"/>
            <apex:column value="{!e.ActorId}"/>
            <apex:column value="{!e.Comments}"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
</apex:component>
public class ApprovalHistoryController {

    public Id targetObjectId0 { get; set; }

    public ProcessInstanceHistory[] history {
        get {
            ProcessInstanceHistory[] xs = new ProcessInstanceHistory[] {};
            for (ProcessInstance e : [
                select
                    Id, (
                        select Id, ProcessNode.Name, CreatedDate, StepStatus, OriginalActorId, ActorId, Comments
                        from StepsAndWorkitems
                        order by IsPending desc, CreatedDate desc, Id desc
                    )
                from ProcessInstance
                where TargetObjectId = :targetObjectId0
                order by CreatedDate desc, Id desc
            ]) {
                xs.addAll(e.StepsAndWorkitems);
            }
            return xs;
        }
    }

}

SFDC:Visualforceとコンテンツファイルのダウンロードリンク

$
0
0

Visualforceとコンテンツファイルのダウンロードリンクについてです。通常のVFページでは次のような感じでJS実装するとコンテンツファイルをダウンロードできます。

<a onclick="return fileDownload('068A0000001RNA8');">ファイルダウンロード</a>
// コンテンツダウンロード
function fileDownload(prmId) {
    location.href = '/sfc/servlet.shepherd/version/download/' + prmId;
    return false;
}

f:id:tyoshikawa1106:20160303090216p:plain


Force.comサイトでも同じようにいけるかなと思ったのですが、次のようになってしまいダメでした。(未ログイン状態で確認)
f:id:tyoshikawa1106:20160303090307p:plain


外部公開されていないファイルを未ログイン状態で参照することはできないのでよく考えたら当たり前か...という感じなのでですが、それならコンテンツ配信したものはどうなるんだろうとそれも試してみました。
f:id:tyoshikawa1106:20160303090744p:plain:w300


コンテンツ配信のURLの場合は、こんな感じでダウンロードページが表示されました。
f:id:tyoshikawa1106:20160303090807p:plain


ざっくり確認ですが、サイトでコンテンツのファイルにアクセスしたい場合はいろいろ考慮しないといけないことがあるみたいです。

SFDC:Community Cloudユーザと承認履歴について

$
0
0

承認履歴の一覧を表示するには、ProcessInstanceHistoryオブジェクトなどを利用することになりますが、このオブジェクト、特別なアクセスルールということで「ポータルユーザとコミュニティユーザはこのオブジェクトにアクセスできません。」となっています。
f:id:tyoshikawa1106:20160303230127p:plain


実際にコミュニティユーザでクエリを実行してみました。
f:id:tyoshikawa1106:20160303230446p:plain


このように『sObject type 'ProcessInstance' is not supported.』となってしまい、承認履歴の情報にアクセスすることはできませんでした。


そもそもコミュニティユーザでは承認申請自体利用できなかったりして..と思い、その部分についても確認してみました。f:id:tyoshikawa1106:20160303230639p:plain


結果、コミュニティユーザでもApexから承認申請処理を正常に実行することができました。ということで承認履歴関係のオブジェクトを参照できないだけで、承認申請自体は問題なく利用できました。
f:id:tyoshikawa1106:20160303230806p:plain


一般ユーザと同じ画面を使いまわそうとしてエラーになる。そんな落とし穴にハマる可能性も考えられるのでコミュニティユーザ向けの機能開発を行う場合はこの辺のルールを意識しておいた方がよさそうです。


ちなみにカスタム項目で承認状況のステータスを登録するための項目を用意してあげれば、同じように承認状況を表示することも可能だと思います。実際にコミュニティユーザで承認履歴情報にアクセスすることになったときはそんな感じで対応できるんじゃないかなと思います。

SFDC:S1アプリ開発とスクロールがトップに戻る問題の回避方法

$
0
0

Salesforce1アプリ用にVisualforceページを開発しようとすると、スクロールがトップに戻される問題に遭遇します。

f:id:tyoshikawa1106:20160305125246j:plain:w200

f:id:tyoshikawa1106:20160305125250j:plain:w200


この問題はiOS版のSalesforce1アプリで発生するみたいです。回避方法がこちらで紹介されていました。
f:id:tyoshikawa1106:20160305130525p:plain

Salesforce1 - page automatically scrolls to top when user taps on a page element on iOS devices only


1) Add the following JavaScript to your page:

<script> 
(function(){try{var a=navigator.userAgent; 
if((a.indexOf('Salesforce')!=-1)&&(a.indexOf('iPhone')!=-1||a.indexOf('iPad')!=-1)&&(a.indexOf('OS/8')!=-1||a.indexOf('OS 8')!=-1)&&(a.indexOf('Safari')==-1)){ 
var s=document.createElement('style'); 
s.innerHTML="html,html body{overflow: auto;-webkit-overflow-scrolling:touch;}body{position:absolute;left:0;right:0;top:0;bottom:0;}"; 
document.getElementsByTagName('head')[0].appendChild(s);}}catch(e){}})(); 
</script> 

2) Add the following JavaScript to your page:

<script> 
var ua=navigator.userAgent; 
if((ua.indexOf('Salesforce')!=-1)&&(ua.indexOf('iPhone')!=-1||ua.indexOf('iPad')!=-1)&&(ua.indexOf('OS/8')!=-1||ua.indexOf('OS 8')!=-1)&&(ua.indexOf('Safari')==-1)){ 
function IOS_SCROLL_BOOTSTRAP() { 
var children = Array.prototype.slice.call(document.body.children), 
placeholder = document.createElement('section'), 
fragment = document.createDocumentFragment(), 
styles, 
width, 
height; 
children.forEach(function(c){fragment.appendChild(c);}); 
placeholder.appendChild(fragment); 
styles = [ 
'width:100%;', 
'height:', (window.screen.height - 42), 'px;', 
'position: absolute; overflow: auto; -webkit-overflow-scrolling: touch' 
].join(''); 
placeholder.style.cssText = styles; 
document.body.appendChild(placeholder); 
} 
window.addEventListener('load', function (e) { 
IOS_SCROLL_BOOTSTRAP(); 
}); 
} 
</script>


判定処理の中に『indexOf('OS/8')』がありますが、これはバージョンを変えて対応する必要があります。除外してもとりあえず動作しました。
1)と2)の二種類が用意されているのですが、どちらかがあればいいのか両方必要なのかちょっとわからなかったのですが、両方入れておいても問題ありませんでした。
f:id:tyoshikawa1106:20160305131257p:plain


これでS1アプリでスクロールがトップに戻る問題を回避することができます。最後にこの方法で対応した場合、AngularJSの『autoscroll="true"』が反映されなくなりました。大きな問題ではないと思いますが、こういった影響があることも意識して置いたほうがよさそうです。


SFDC:S1アプリ開発と$rootScope:inprogエラー (AngularJS × RemoteAction)

$
0
0

Salesforce1アプリ開発でAngularJsとRemoteActionをつかっていたときに、$rootScope:inprogエラーに遭遇しました。

f:id:tyoshikawa1106:20160305132152j:plain:w200


このエラーは、applyメソッド呼び出しがあり、 更新処理が多重実行されてしまったときに発生するみたいです。
f:id:tyoshikawa1106:20160305133128p:plain


今回のケースでは、inputフィールドに文字が入力されたタイミングでRemoteActionをつかったリアルタイム検索処理をしようとして発生しました。
f:id:tyoshikawa1106:20160305132148j:plain:w200

f:id:tyoshikawa1106:20160305134051p:plain


今回の現象の不思議なところとして、モバイル端末ではなくPC環境で利用した場合はエラーが発生しないということです。(PCからS1モードで確認)
f:id:tyoshikawa1106:20160305133344p:plain


回避方法は見つけられませんでしたが、S1モバイルアプリでのみ発生するみたいなので、このエラー発生時にはエラー表示をせずにそのまま利用できるようにしてしまってもいいのかなと思います。


とりあえずAngularJSをつかってS1アプリを開発する場合、こういった現象があることを意識しておくといいのかなと思います。

SFDC:RemoteActionとnot found on controllerエラー

$
0
0

RemoteActionの処理を実行時に次のようなエラーに遭遇しました。
f:id:tyoshikawa1106:20160305135529p:plain

Method 'getAccount' not found on controller S1AccountController. Check spelling, method exists, and/or method is RemoteAction annotated.


S1AccountControllerクラスのgetAccountメソッドが見つかりません..というエラーです。


このクラスもこのメソッドもちゃんと用意されているし、別の処理で実際に動いているのに。。と思ったのですが、原因は引数にセットされている値でした。


今回エラーが出た時の処理は、レコードIDを条件に対象レコードを取得するという処理です。
f:id:tyoshikawa1106:20160305135920p:plain:w300


このレコードIDはAngularJSの『$routeParams.id』をつかって取得しようとしました。
f:id:tyoshikawa1106:20160305140024p:plain


$routeParams.idは値が存在しない場合、NULLでもブランク値でもなく『undefined』がセットされます。この『undefined』をRemoteActionの引数として渡そうとしたことでエラーが発生していました。
f:id:tyoshikawa1106:20160305140627p:plain


次のように値の存在判定をして、『undefined』の場合はNULLをセットするようにしておけば、このエラーを回避できます。
f:id:tyoshikawa1106:20160305140315p:plain


RemoteActionの処理でnot found on controllerというエラーが発生した場合はこのあたりもチェックしてみると良さそうです。

SFDC:Apex開発の便利なStringメソッド『leftPad』の使い方

$
0
0

ApexのStringメソッドにはleftPadというメソッドが用意されています。指定の文字列を特定の文字数になるまで文字を追加できるメソッドです。

f:id:tyoshikawa1106:20160305144110p:plain


Apexガイドには引数の指定に文字数を指定できると記載されていますが、文字数の他に実際に追加する文字列も指定することが可能となっています。

String strVal = 'i';
String result = strVal.leftPad(3, '0');

というような感じです。


テストデータを用意するときにも便利です。

List<Account> accounts = new List<Account>();
for (Integer i = 0; i < 100; i++) {
    accounts.add(new Account(Name = 'デモ_' + String.valueOf(i).leftPad(3, '0')));
}
insert accounts;

f:id:tyoshikawa1106:20160305144541p:plain:w200


右側に追加したい場合はrightPadも用意されています。
f:id:tyoshikawa1106:20160305144645p:plain

SFDC:Salesforce1モバイル用のサンプルアプリ

SFDC:S1アプリ開発でscrollerjsを試してみました

$
0
0

S1アプリ開発でscrollerjsを試してみました。
f:id:tyoshikawa1106:20160306014505p:plain


scrollerjsについてはこちら。

サンプルコード


デモ動画

SFDC:Chatterグループとブロードキャストのみ設定

$
0
0

Chatterグループのグループアクセス設定に「ブロードキャストのみ」が追加されていました。
f:id:tyoshikawa1106:20160306161823p:plain


これを利用するとグループ所有者またはグループマネージャのみ新しい投稿を作成できるように制限することができるみたいです。また、グループメンバーはコメントのみ投稿可能となります。


投稿できるユーザを制限することで社内ニュース専用グループのような使い方ができると思います。
f:id:tyoshikawa1106:20160306161407p:plain


グループマネージャはロールの変更リンクから設定できます。
f:id:tyoshikawa1106:20160306161500p:plain


所有者やマネージャ以外のユーザがグループにアクセスすると新規投稿ができないようになっています。コメントや「いいね」、共有などの操作は可能でした。
f:id:tyoshikawa1106:20160306161806p:plain


Chatterグループ設定に新しく追加された「ブロードキャストのみ」設定はこんな感じでした。

リリースノート

SFDC:Chatterグループのバナー画像設定を試してみました

$
0
0

Chatterグループのバナー画像設定はLightning Experience専用の機能です。グループ画面の右上にあるカメラアイコンから設定できます。
f:id:tyoshikawa1106:20160306162606p:plain


アップロードできる画像の条件は次のようになっています。
f:id:tyoshikawa1106:20160306163119p:plain


バナー画像で表示できる高さは決まっていますが、次のようにトリミングできるようになっていました。
f:id:tyoshikawa1106:20160306163228p:plain


アップロード後は次のように表示されます。
f:id:tyoshikawa1106:20160306163258p:plain


別の写真に変更したい場合は、再度カメラアイコンをクリックして編集リンクを選択します。
f:id:tyoshikawa1106:20160306163500p:plain


先ほどと同じ手順でアップロードとトリミングをしてあげると変更完了です。
f:id:tyoshikawa1106:20160306163619p:plain



バナー写真はグループだけでなく、ユーザの画面にも設定することができるようになっています。
f:id:tyoshikawa1106:20160306163720p:plain

リリースノート


SFDC:Chatterグループのグループレポートを試してみました

$
0
0

Chatterグループにグループレポートリンクが追加されていました。ここからグループメンバーの活動状況をレポートで参照できるみたいです。
f:id:tyoshikawa1106:20160306164147p:plain


こちらがデフォルト設定のレポートです。投稿数やいいねの数などを確認することができます。
f:id:tyoshikawa1106:20160306164254p:plain


カスタマイズできる内容はこんな感じでした。
f:id:tyoshikawa1106:20160306164357p:plain


確認できるのは投稿数など基本的な情報で個々のメンバーの利用状況はこのレポートには含まれていなそうです。ですがグループ設定画面から参照できるのは便利そうでした。


ちなみに管理者以外の参照権限のないユーザの場合はグループレポートリンクは非表示になっていました。
f:id:tyoshikawa1106:20160306164633p:plain

リリースノート

SFDC:Chatterグループの参加数上限が増加しました

$
0
0

グループの増加に伴うコラボレーションの増大ということで個々のユーザが参加できるChatterグループが最大300まで増加しました。各 Salesforce 組織には最大 30,000 のグループを含めることができます。

f:id:tyoshikawa1106:20160306165726p:plain


アーカイブ済みグループは、個人および組織レベルのグループの制限にカウントされないとのことなので、不要になったグループはアーカイブしておいた方がいいみたいです。

リリースノート

SFDC:グループレコードの作成と「Chatter グループ内で許可」設定について

$
0
0

権限のあるユーザは、カスタムオブジェクト設定でその種別のカスタムオブジェクトレコードがグループで許可されていない場合でも、グループパブリッシャーを使用してそのレコードをグループ内で作成できるようになりました。
f:id:tyoshikawa1106:20160306171124p:plain


これまでは、「Chatter グループ内で許可」のチェックボックスがオフになっていると、ユーザはその種別のレコードをグループ内で作成できませんでした。
f:id:tyoshikawa1106:20160306171722p:plain


レコード作成権限のあるユーザは、そのオブジェクト種別のレコードをグループパブリッシャーから作成できるようになりました。
f:id:tyoshikawa1106:20160306172340p:plain


ただし、グループレコードへの紐付は行えないようになっています。
f:id:tyoshikawa1106:20160306172415p:plain


ちなみにグループアクションの作成とレイアウトの追加はこんな感じ。

アクション作成

f:id:tyoshikawa1106:20160306172125p:plain

グループレイアウトに追加

f:id:tyoshikawa1106:20160306172111p:plain


Chatterグループ内で許可にチェックを付けておけば、グループレコードとして紐つけることが可能です。
f:id:tyoshikawa1106:20160306172623p:plain


グループレコードとして紐付くとレコードへのアクセスもしやすくなるので基本的にはChatterグループ内で許可にチェックしておくと良さそうです。
f:id:tyoshikawa1106:20160306172839p:plain


ちなみにチェック無しの時に作成したレコードは、後からチェック有りに変更されても自動で紐付くということはありませんでした。

リリースノート

SFDC:Napili コミュニティでのグループのサポートを確認してみました

$
0
0

Spring16からNapili コミュニティでのグループのサポートされるようになりました。Salesforce Classicでのみ利用可能みたいです。
f:id:tyoshikawa1106:20160306175817p:plain

Napiliコミュニティというのはコミュニティ作成時に選択できるNapiliテンプレートのことです。
f:id:tyoshikawa1106:20160306174939p:plain


テンプレートはコミュニティ作成後でも変更可能です。
f:id:tyoshikawa1106:20160306175018p:plain


Napiliテンプレート利用時の設定画面です。
f:id:tyoshikawa1106:20160306175143p:plain


今回追加されたというのはここのグループページ設定のことだと思います。
f:id:tyoshikawa1106:20160306175349p:plain


...なんですがコミュニティビルダーの設定方法をよくわかっていないので実際に有効化するところまでは確認できませんでした。
f:id:tyoshikawa1106:20160306175620p:plain


とりあえずページ設定したり先にコミュニティにグループを追加したりの作業が必要そうです。今回はこういうことが可能になったということを覚えておけばいいかなと思います。

リリースノート

SFDC:Lightning Experience での顧客グループのサポート開始

$
0
0

顧客グループがLightning Experienceでも利用できるようになったみたいです。
f:id:tyoshikawa1106:20160306181157p:plain


グループアクセスのコレのことです。
f:id:tyoshikawa1106:20160306181146p:plain


Lightning Experienceの場合はこんな感じ。
f:id:tyoshikawa1106:20160306181318p:plain


追加手順は以下のとおりです。

グループに顧客を許可するには、まず非公開グループを作成してから、グループ設定で [顧客を許可] を選択します。[メンバーの追加] アクションを使用して、カスタマーユーザをメンバーとして追加します。[メンバーの追加] アクションが表示されない場合は、グループパブリッシャーレイアウトにこのアクションが含まれていることを確認します。

リリースノート

Viewing all 1438 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>