実現したいこと
『Looker Studioのkintone用コネクタを作成中だがデータが100件以上取得できない』https://teratail.com/questions/0hz077p3s531nn
コチラの内容を参考にさせていただきながら、kintoneとLooker Studioの連携を試しています。
発生している問題・分からないこと
データの連携などは上手くできたものの、kintoneの日付データ(売上日)をLooker Studioに連携した際、そのデータを期間のディメンションとして設定することができず、”期間設定”で期間を絞り込んでグラフや表を表示することができなくて困っています。
解決策など何か分かる方がいらっしゃればご教示いただけますと幸いです。
宜しくお願いいたします。
エラーメッセージ
error
1特にエラーメッセージはなし。 2期間設定で日付を絞り込みしても、一覧表には全件表示されたままになります。(日付の絞り込みができない)
該当のソースコード
var cc = DataStudioApp.createCommunityConnector(); //コネクタの認証方法を返す関数を設定 function getAuthType() { var AuthTypes = cc.AuthType; return cc .newAuthTypeResponse() .setAuthType(AuthTypes.NONE) .build(); } //コネクタ追加時にkintoneアプリのIDを入力してレコードのリストを取得するように指示 function getConfig(request) { var config = cc.getConfig(); config.newInfo() .setId('instructions') .setText('Looker Studioに接続するkintoneのアプリIDを入力してください'); config.newTextInput() .setId('app_id') .setName('kintoneのアプリID'); config.setDateRangeRequired(true); return config.build(); } //kintoneアプリから取得可能なフィールドを定義 function getFields(request) { var cc = DataStudioApp.createCommunityConnector(); var fields = cc.getFields(); var types = cc.FieldType; fields.newDimension() .setId('record_id') .setName('レコード番号') .setType(types.TEXT); fields.newDimension() .setId('company_code') .setName('顧客コード') .setType(types.NUMBER); fields.newDimension() .setId('company_name') .setName('顧客名') .setType(types.TEXT); fields.newDimension() .setId('sales_date') .setName('売上日') .setType(types.YEAR_MONTH_DAY) fields.newDimension() .setId('gross_profit') .setName('粗利益') .setType(types.NUMBER); return fields; } //リクエストされたフィールドに対応するスキーマを取得 function getSchema(request) { var fields = getFields(request).build(); return { schema: fields }; } //kintone APIからデータを取得し、Looker Studioで使用できる形式に変換 function getData(request) { var requestedFieldIds = request.fields.map(function(field) { return field.name; }); var requestedFields = getFields().forIds(requestedFieldIds); // Fetch and parse data from kintone API var appId = request.configParams.app_id; var apiToken = PropertiesService.getScriptProperties().getProperty("KINTONE_API_TOKEN"); var limit = 500; var offset = 0; const query = '粗利益 >= "1" or 粗利益 <= "-1"' var allRecords = []; while (true) { var url = 'https://サブドメイン.cybozu.com/k/v1/records.json?app=' + appId + '&query=' + encodeURIComponent(query) + encodeURIComponent('limit ' + limit + ' offset ' + offset); var headers = { 'X-Cybozu-API-Token': apiToken }; var options = { 'headers': headers }; var response = UrlFetchApp.fetch(url, options); var parsedResponse = JSON.parse(response); var kintoneRecords = parsedResponse.records; allRecords = allRecords.concat(kintoneRecords); if (kintoneRecords.length < limit) { break; } offset += limit; } var rows = responseToRows(requestedFields, allRecords); return { schema: requestedFields.build(), rows: rows }; } // kintoneからのレスポンスをLooker Studioの行形式に変換 function responseToRows(requestedFields, response) { return response.map(function(record) { var row = []; requestedFields.asArray().forEach(function (field) { switch (field.getId()) { case 'record_id': return row.push(record['レコード番号'].value); case 'company_code': return row.push(record['顧客コード'].value); case 'company_name': return row.push(record['文字列__1行_'].value); case 'sales_date': return row.push(record['売上日'].value.replace(/-/g, '')); case 'gross_profit': return row.push(record['粗利益'].value); } }); return { values: row }; }); } // エラーが起きたときにデバッグに必要な詳細の説明が得られる関数を設定 function isAdminUser() { return true; }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
https://f-884.com/article/277
コチラの記事を参考にLooker Studio側でTODATE関数を設定し、もう一つ別で日付フィールド(売上日2)を用意しました。TODATE(売上日,"%Y/%m/%d")
→ 売上日2を利用した表でも特に変わりませんでした。(期間のディメンションとして設定することができず、”期間設定”で期間を絞り込んでグラフや表を表示することができない)
補足
特になし
![guest](/img/icon/icnUserSample.jpg)
あなたの回答
tips
プレビュー