アプリIDからゲストスペースIDを取得する方法

できました。

下記 appIds の 586 はゲストスペース所属、539 は通常スペース所属、
278 はスペース未所属、999 は存在しないアプリIDなのですが、
どれも下図のように、スペースに属していればスペースIDを取得し
そのスペースがゲストか否かの判定も可能でした。

(() => {
    'use strict';

    // レコード一覧画面が表示されたときに処理を開始
    kintone.events.on('app.record.index.show', async () => {

        // 属するスペースのIDと、そのスペースIDが通常スペースかゲストスペースかを調べるアプリ群
        const appIds = [586, 539, 278, 999];

        for (const appId of appIds) {
            try {
                const appInfo = await getAppInfo(appId);

                // アプリIDが存在しなかった場合
                if (!appInfo.apps || appInfo.apps.length === 0) {
                    console.error(`アプリID ${appId} の情報が取得できませんでした`);
                    continue;
                }

                const spaceId = appInfo.apps[0].spaceId;
                console.log(`取得したspaceId (appId: ${appId}):`, spaceId);

                // アプリがスペースに属していなかった場合
                if (!spaceId) {
                    console.log(`アプリID ${appId} はスペースに属していません`);
                    continue;
                }

                const spaceInfo = await getSpaceInfo(spaceId);

                // アプリがスペースに属していたら、通常スペースかゲストスペースかでログを変える
                if (spaceInfo.isGuest) {
                    console.log(`取得したスペースID ${spaceId} はゲストスペースです (appId: ${appId})`);
                } else {
                    console.log(`取得したスペースID ${spaceId} は通常のスペースです (appId: ${appId})`);
                }

            } catch (error) {
                console.error(`エラー発生 (appId: ${appId}):`, error);
            }
        }
    });

    // アプリ情報を取得する関数
    async function getAppInfo(appId) {
        const client = new KintoneRestAPIClient();
        return client.app.getApps({ ids: [appId] });
    }

    // スペース情報を取得する関数
    async function getSpaceInfo(spaceId) {
        const client = new KintoneRestAPIClient();
        try {
            return await client.space.getSpace({ id: spaceId });
        } catch (error) {
            // 通常スペースではなかった場合にゲストスペースと見做して処理を続行
            if (error.code === "GAIA_IL25") {
                console.log(`ゲストスペースの可能性あり (spaceId: ${spaceId}) - ゲストスペース用APIクライアントを使用`);
                const guestClient = new KintoneRestAPIClient({ guestSpaceId: spaceId });
                return await guestClient.space.getSpace({ id: spaceId });
            }
            throw error;
        }
    }
})();
「いいね!」 2