プロセスビルダーでToDoの「期日」項目表示
Salesforceの画面では「ToDo」で「期日」と表示される項目が、プロセスビルダーでは「期日のみ」と表示されてしまいます。
これは、SalesforceのAPIがこの項目(ActivityDate)に関しては、項目の表示ラベルと異なる値を返すことが原因です。
kinkun's blog
プロセスビルダーでToDoの「期日」項目表示
Salesforceの画面では「ToDo」で「期日」と表示される項目が、プロセスビルダーでは「期日のみ」と表示されてしまいます。
これは、SalesforceのAPIがこの項目(ActivityDate)に関しては、項目の表示ラベルと異なる値を返すことが原因です。
オブジェクトのレコードタイプ名からレコードタイプ表示ラベル取得例を紹介します。
String RecordTypeDevName = 'testDevName';
String objName = 'testObject__c';
List<RecordType> recordTypeList = [
SELECT Id
, Name
FROM RecordType
WHERE SobjectType = : objName
AND DeveloperName = : RecordTypeDevName
];
for(RecordType rtobj : recordTypeList){
system.debug('rtobj.Name:'+rtobj.Name);
}
オブジェクトAPI参照名からオブジェクト表示ラベル取得例を紹介します。
String searchObjName = 'Account';
Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();
for (String sKey : gd.keySet()) {
Schema.DescribeSObjectResult targetObject = gd.get(sKey).getDescribe();
if(targetObject.getName() == searchObjName){
System.debug('targetObject.getLabel()----->targetObject.getName()::::::'+targetObject.getLabel()+'----->'+targetObject.getName());
}
}
オブジェクトAPI参照名からオブジェクト表示ラベル取得例を紹介します。
String searchObjLabelName = '取引先';
Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();
for (String sKey : gd.keySet()) {
Schema.DescribeSObjectResult targetObject = gd.get(sKey).getDescribe();
if(targetObject.getLabel() == searchObjLabelName){
System.debug('targetObject.getLabel()----->targetObject.getName()::::::'+targetObject.getLabel()+'----->'+targetObject.getName());
}
}
オブジェクトのレコードタイプIDからレコードタイプ名取得例を紹介します。
List<RecordType> recordTypeList = [
SELECT Id
, Name
FROM RecordType
WHERE SobjectType = 'testObj__c'
AND Id = '012211111111111111'
];
for(RecordType rtobj : recordTypeList){
system.debug('rtobj.Name:'+rtobj.Name);
}
または、以下の例もあります。
String searchObjName = 'testObj__c';
String searchRecordTypeId = '012211111111111111';
List<RecordType> recordTypeList = [
SELECT Id
, Name
FROM RecordType
WHERE SobjectType = : searchObjName
AND Id = : searchRecordTypeId
];
for(RecordType rtobj : recordTypeList){
system.debug('rtobj.Name:'+rtobj.Name);
}
テストクラス実行時、「Failed to run tests synchronously.: Your query request was running for too long.」エラーの対応
Summary
Test classes failing with QUERY_TIMEOUT Failed to run tests synchronously when running in synchronous mode
Error Message:
“QUERY_TIMEOUT Failed to run tests synchronously: Your query request was running for too long”
Workaround
As a workaround, please try to run the test class in asynchronous mode.
VisualStudio CodeでWordPressとFTPで接続例を紹介します。
VisualStudio Codeの拡張で、「ftp-simple」入力し、Installします。
VisualStudio Codeのメニュー「View」押下し、「ftp-simple:Config」押下し、ファイルを開きます。
開かれた「ftp-simple-temp.json」ファイルを編集します。
[
{
"name": "test.test.or.jp",
"host": "host.test.or.jp",
"port": 21,
"type": "ftp",
"username": "testadmin",
"password": "xxxxxxxxxxxxxxxx",
"path": "/",
"autosave": true,
"confirm": true
}
]
VisualStudio Codeのメニュー「View」押下し、「ftp-simple:Remote directory open to workspace」押下し、「.Current Directory:/」押下します。成功すると、Successが画面に表示され、WordpressのDirectoryが左サイドに表示されます。
lightning-record-form を使用して取引先責任者を作成例を紹介します。
contactCreator.html
<template>
<lightning-card>
<lightning-record-form
object-api-name={objectApiName}
fields={fields}
onsuccess={handleSuccess}>
</lightning-record-form>
</lightning-card>
</template>
contactCreator.js
import { LightningElement } from 'lwc';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import CONTACT_OBJECT from '@salesforce/schema/Contact';
import FIRSTNAME_FIELD from '@salesforce/schema/Contact.FirstName';
import LASTNAME_FIELD from '@salesforce/schema/Contact.LastName';
import EMAIL_FIELD from '@salesforce/schema/Contact.Email';
export default class ContactCreator extends LightningElement {
objectApiName = CONTACT_OBJECT;
fields = [FIRSTNAME_FIELD, LASTNAME_FIELD, EMAIL_FIELD];
handleSuccess(event) {
const toastEvent = new ShowToastEvent({
title: "Contact created",
message: "Record ID: " + event.detail.id,
variant: "success"
});
this.dispatchEvent(toastEvent);
}
}
contactCreator.js-meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>51.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__AppPage</target>
</targets>
</LightningComponentBundle>
設定 をクリックして [設定] を選択します。
[クイック検索] ボックスに「Lightning アプリケーションビルダー」(Lightning App Builder)と入力し、[Lightning アプリケーションビルダー] を選択します。
Lightning ページを作成します。
[新規] (New)をクリックします。
[アプリケーションページ] (App Page)を選択し、[次へ] をクリックします。
[表示ラベル] に「Working with Data」(データの操作) と入力し、[次へ] をクリックします。
レイアウトで [ヘッダーと左サイドバー] (Header and Left Sidebar)を選択します。
[完了] (Finish)をクリックします。
contactCreator コンポーネントをページサイドバーにドラッグします。
ページを保存(Save)します。
ページを有効化します。デフォルトのアプリケーション名 (Working with Data) のままで [保存] (Save)をクリックします。
ページをナビゲーションメニューに追加するように要求されたら、[完了] (Finish)をクリックします。
新しいページを開きます。アプリケーションランチャーの検索で「work」と入力し、[Working with Data (データの操作)] を選択します。
データを登録します。
First name: Lisa
Last name: Jones
Email: ljones@developer.com
単一メール(SingleEmailMessage)でメール送信例です。
複数のメールを一度に送信することができます。
メールテンプレートを使用せずにメールを送信
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setToAddresses(toAddresses); // 送信先(String[])
mail.setCcAddresses(ccAddresses); // 省略可能。CC送信先(String[])
mail.setBccAddresses(bccAddresses); // 省略可能。BCC送信先(String[])
mail.setSubject(subject); // 件名(String)
mail.setPlainTextBody(body); // 本文(String)
mail.setEntityAttachments(ids); // 省略可能。添付ファイル(Document、ContentVersion、AttachmentのIDのリスト)
mail.setReplyTo(replyAddress); // 返信先メールアドレス(String)
Messaging.sendEmail(new List<Messaging.SingleEmailMessage>{mail});
動的SOQLに例文紹介します。
String tp = 'tptest';
String pt = 'pttest';
Date todayDate = Date.today();
String soql = 'SELECT Name ' +
' FROM Test__c ' +
' WHERE TestCo__c = ' + '\'' + this.co + '\''+
' and TestPt__c = ' + '\'' + pt + '\'' +
' and TestDt1__c <= : todayDate ' +
' and TestDt2__c >= : todayDate ';
if(!String.isBlank(tp)){
soql += ' and TestTp__c = ' + '\'' + tp + '\'' ;
}
soql += ' Order by Name ';
List<Test__c> results = Database.query(soql);