Heroku AppLinkの使い方(DML)

Heroku AppLinkの使い方のサンプル第2弾でも。

※サンプルコードは Node.js 版のSDKを使ったものに限定です。SDKのリポジトリは https://github.com/heroku/heroku-applink-nodejs を参照してください。

1. レコードの作成

※もちろん添付ファイルを作成することも可能

import * as salesforcesdk from "@heroku/applink";


async function sample () {
  const sdk = salesforcesdk.init();
  // ※Authorized Userを使います
  const org = await sdk.addons.applink.getAuthorization(process.env.HEROKU_APPLINK_CONNECTION_NAME);

  //----------------------------------------------------------
  // (1)レコードを作成
  //  - 参照先を設定する際には、外部キーの指定も可能
  const new_record = await org.dataApi.create({
    type: "customobject__c", // オブジェクトAPI
    fields: {
      key__c: ulid(),
      text01__c: 'xxxxx',
      longtextarea01__c: description,
      num01__c: 123,
      datetime01__c: new Date().toISOString(),
      check01__c: false,
      other_object__r: { key__c: 'other_key' },
    },
  });

  //----------------------------------------------------------
  // (2)contentversionの場合も
  //   JSONファイルを作成してBase64エンコード
  const jsonData = JSON.stringify(someobject, null, 2);
  const base64Data = Buffer.from(jsonData, 'utf-8').toString('base64');
  const fileName = 'xxx.json';

  // ContentVersionを直接作成
  const contentVersionResult = await org.dataApi.create({
    type: 'ContentVersion',
    fields: {
      Title: fileName,
      PathOnClient: fileName,
      VersionData: base64Data,
      ContentLocation: 'S'
    }
  });
  
  // ContentDocumentIdを取得するためにContentVersionをクエリ
  const contentVersionQuery = await org.dataApi.query(`SELECT ContentDocumentId FROM ContentVersion WHERE Id = '${contentVersionResult.id}'`);
  const contentDocumentId = contentVersionQuery.records[0]?.fields?.ContentDocumentId;

  // ContentDocumentLinkを直接作成してレコードに関連付け
  const linkResult = await org.dataApi.create({
    type: 'ContentDocumentLink',
    fields: {
      ContentDocumentId: contentDocumentId,
      LinkedEntityId: '(record id)',
      ShareType: 'V',
      Visibility: 'AllUsers'
    }
  });
  
}

2. レコードの更新

import * as salesforcesdk from "@heroku/applink";


async function sample () {
  const sdk = salesforcesdk.init();
  // ※Authorized Userを使います
  const org = await sdk.addons.applink.getAuthorization(process.env.HEROKU_APPLINK_CONNECTION_NAME);
  
  // レコードを更新
  //  - 参照先を設定する際には、外部キーの指定も可能
  const new_record = await org.dataApi.update({
    type: "customobject__c", // オブジェクトAPI
    fields: {
      id: '(オブジェクトid)',
      text01__c: 'xxxxx',
      longtextarea01__c: description,
      num01__c: 123,
      datetime01__c: new Date().toISOString(),
      check01__c: false,
      other_object__r: { key__c: 'other_key' },
    },
  });

}

3. レコードの削除

typeid を指定するだけ

import * as salesforcesdk from "@heroku/applink";


async function sample () {
  const sdk = salesforcesdk.init();
  // ※Authorized Userを使います
  const org = await sdk.addons.applink.getAuthorization(process.env.HEROKU_APPLINK_CONNECTION_NAME);
  
  // レコードを削除
  const new_record = await org.dataApi.delete({
    type: "customobject__c", // オブジェクトAPI
    fields: {
      id: '(オブジェクトid)',
    },
  });

}

そんなにややこしいAPIになってないので、素直に利用できる。
が、upsert がないのが残念...

ちなみに、dataApi.insert() の中身を掘り下げていくと、こんな記述をお目にかかります。

import { Connection } from "jsforce/lib/connection";

Heroku AppLinkのNode.js SDKの内部では、stomita先生のjsforceが使われている、ということでした。さすが。

Read more

Agentforce

文字起こしエージェントアクションの追加(Summer'26)

エージェントアクションにWhisper V3 Turbo (Whisper Large V3 Turboと思われる)による文字起こし機能が追加。6/22週から利用可能。 * Whisperはセルフホストっぽい。 * 5MB未満 * 話者識別やタイムスタンプはない。 電話音声だと帯域狭いから、適切な前処理すれば50分ぐらいいけるかも。MP3 64Kbpsだと10分ほどの計算になる。 Choose a Transcription Model for the Speech to Text Agent Action Use the Transcription Model parameter on the Speech to Text action to control which model converts audio to text. Choose the model

By Hiroki Matsumoto

Salesforce

Multi-FrameworkでReactAppを(内部向けアプリ)

あれ、もうGAになったのかな? 前に外部向け(Experience Cloud)のReact Appを作成してみたので、今度は内部向けも試してみる。今回はSandbox環境にデプロイして動かせるのか試してみよう。 内部向けのsfdxプロジェクトを作成 今回は --template に reactinternalapp を指定する $ sf template generate project --name wkInReactApp --template reactinternalapp npmパッケージのインストール&ビルド READMEにある通りに、作成したプロジェクトのルートディレクトリで、以下を実行する $ npm install $ npm run sf-project-setup > @salesforce/ui-bundle-template-base-sfdx-project@1.135.0 sf-project-setup >

By Takahiro Yonei

Salesforce

Multi-FrameworkでReactAppを(外部向けアプリ)

拝啓 もうすぐGAでしょうか... Salesforce Mult-Framework を使用した React による UI 開発 SalesforceでReactアプリを動かせるようになるということで試してみた備忘録を記録してみます。 以下、ご参考 GitHub - trailheadapps/multiframework-recipes: A collection of easy-to-digest code examples for React on Salesforce PlatformA collection of easy-to-digest code examples for React on Salesforce Platform - trailheadapps/multiframework-recipesGitHubtrailheadapps 公式ドキュメント -> Integrate Your React

By Takahiro Yonei