困っていること
Power BIを使ってkintoneの1つのアプリのデータを取得して、「適用」の処理を実行したいです。
Power queryを使ってデータの取得はできるが、取得後の適用時に下記エラーがでて困っています。
また、その他のアプリは問題なく適用できており、あるアプリにおいて下記エラーメッセージが表示されます。
エラーメッセージ
読み込み
クエリ1
サーバーに対する変更の保存に失敗しました。返されたエラー: 'OLE DB または ODBC エラー: [DataSource.Error] Web.Contents は ‘https://■サブドメイン■.cybozu.com/k/v1/records.json?app=■アプリID■&query=limit%20500%20offset%2010500’ (400) からコンテンツを取得できませんでした: Bad Request。 '。
実行したコード
下記URLを参考にサブドメイン・アプリID・トークン・カラムを変更して実行
⇒下記コードを使用してデータ(テキスト)の取得はできるが、その後の適用が出来ない
kintoneデータを使ってPowerBIでダッシュボードを作る|株式会社Crena(クレナ) (create-new-air.com)
let
// Author: Chachay https://pid123.blogspot.com/2020/04/kintone-power-bi.html
BaseUrl = "https://subdomain.cybozu.com/k/v1/records.json?",
APPID = "app=XX",
Token = "",
COLUMNS = {"",""},
EntitiesPerPage = 500,
GetJson = (Url) =>
let Options = [Headers=[ #"X-Cybozu-API-Token" = Token ]],
RawData = Web.Contents(Url, Options),
Source = Json.Document(RawData),
records = Source[records]
in records,
Table.GenerateByPage = (getNextPage as function) as table =>
let
listOfPages = List.Generate(
() => getNextPage(null),
(lastPage) => lastPage <> null,
(lastPage) => getNextPage(lastPage)
),
tableOfPages = Table.FromList(listOfPages, Splitter.SplitByNothing(), {"Column1"})
in
Table.ExpandTableColumn(tableOfPages, "Column1", COLUMNS),
CheckNextPage = (response, Index) as number =>
if (response=EntitiesPerPage) then Index+1 else -1,
GetPage = (Index) =>
let Skip = "offset " & Text.From(Index * EntitiesPerPage),
Limit = "limit " & Text.From(EntitiesPerPage),
Url = BaseUrl & APPID & "&query=" & Limit & " " & Skip,
Json = GetJson(Url),
data = Table.FromRecords(Json),
next = CheckNextPage(Table.RowCount(data), Index)
in
data meta [Next = next],
GetAllPages = () as table =>
Table.GenerateByPage((previous) =>
let
next_index = if (previous = null) then 0 else Value.Metadata(previous)[Next]?,
page = if (next_index > -1) then GetPage(next_index) else null
in
page
),
ExpandRecordColumns = (Table, columns, fieldName) =>
if List.Count(columns)=0 then Table
else
let tmp = Table.ExpandRecordColumn(Table, List.First(columns), {fieldName}, {List.First(columns)}),
Result = @ExpandRecordColumns(tmp, List.Skip(columns,1), fieldName)
in Result,
Table = GetAllPages(),
Data = ExpandRecordColumns(Table, COLUMNS, "value"),
変更された型 = Table.TransformColumnTypes(Data,{{"取引開始日", type date}, {"取引終了日", type date}, {"資本金", Int64.Type}, {"従業員数", Int64.Type}})
in
変更された型