Obtain a list of sheets from an analytics app
For this example the id of a Qlik Sense Application that you have access to is
needed. To get the id of an app, click the “More actions” button on the app
from the Qlik Cloud Hub and click details. There the app id is visible.
Another option is to open the app and look at the URL. The app id is located as
/sense/<app-id>/
in the URL.
NodeJS using an API Key
import { auth, qix } from "@qlik/api";
const hostConfig = {
authType = "apikey",
host: "your-tenant.region.qlikcloud.com",
apiKey: "<api-key>",
};
// to use "Oauth2" auth module switch hostConfig to oauth2 and set clientId
// and clientSecret instead of apiKey.
const appId = "<app-id>";
auth.setDefaultHostConfig(hostConfig);
async function main() {
const session = qix.openAppSession({ appId });
const app = await session.getDoc();
const sheetList = await app.getSheetList();
console.log(sheetList);
session.close();
}
main();
In this example, use the API method app.getSheetList()
which comes from
a “sense mixin” which is an extension of the official QIX API used for Qlik
Sense Applications. In @qlik/api
all “sense mixins” have been included to
easily interact with Qlik Sense Applications in the same way in-house Qlik
Developers do.
Browser using Cookies
When using a browser you can load the library files from a CDN provider. It is also possible to use npm and a bundler to get the code into your application. In the HTML below, make an API call to fetch the sheet list from a Qlik Sense App and add the sheet titles as div elements in the dom.
<!doctype html>
<html lang="en">
<head>
<title>Fetching sheet list from an app with @qlik/api</title>
</head>
<body>
<div id="sheet-container" class="container">
<div>Sheets:</div>
<!-- Sheets will be addeed here -->
</div>
<script type="module">
import { auth, qix } from "https://cdn.jsdelivr.net/npm/@qlik/api/index.mjs";
auth.setDefaultHostConfig({
host: "your-tenant.region.qlikcloud.com",
authType: "cookie",
webIntegrationId: "<web-ingetration-id>",
});
const appId = "<api-key>";
const session = qix.openAppSession({ appId });
const app = await session.getDoc();
const sheetList = await app.getSheetList();
const sheetContainer = document.getElementById("sheet-container");
for (const sheet of sheetList) {
const div = document.createElement("div");
div.innerText = sheet.qMeta.title;
sheetContainer.appendChild(div);
}
session.close(); // closing the app
</script>
</body>
</html>