Esper ルールの 1 つで、管理対象オブジェクトの特定の (カスタム) プロパティを取得するか、存在しない場合はデフォルト値を取得する必要があります。そこで、これを js 式で行うことにしました。私はこのように始めました:
create expression Number js:getTripId(deviceId) [
function getTripIdorOrDefault(managedObject) {
// ...
}
getTripIdorOrDefault(findManagedObjectById(deviceId));
];
ただし、テストすると、「findManagedObjectById が定義されていません」という出力が表示されます。それでは、関数を書き直して、managedObject を直接受け取り、次のように続行するようにします。
create expression Number js:getTripId(managedObject) [
function getTripIdorOrDefault(managedObject) {
// treatments for nulls...
return managedObject.tripId;
}
getTripIdorOrDefault(managedObject);
];
私が呼び出すこと:
getTripId(findManagedObjectById(getString(e.source, "value")))
しかし、私はヌル値を取得します。managedObject を出力すると、そうではないことがわかります。次に、テキスト、時間、タイプなどの他の「デフォルト」プロパティにアクセスして、null も取得しようとしました。
そのため、ブラケット表記を使用しようとしましたmyObject['myProperty']
が、Things Cloud ではモジュールを保存できません (構文が正しくありません)。オブジェクトの利用可能なプロパティを確認するために使用しようとしましObject.keys(managedObject)
たが、javascript のバージョンが 1.8.5 より古いようです。また、Cumulocity の getString、getNumber などの関数は、私が理解しているように JavaScript では使用できません。
では、JavaScript 式でデバイス オブジェクトを操作するにはどうすればよいでしょうか。