我如何使用 ansible 的 with_items 解析 google 工作表 api 中的每一行数据?
how it I parse each row of data from the google sheets api with ansible's with_items?
我正在使用 Google Sheets V4 Values 集合,但我无法弄清楚如何将每一行解析为 {{ item }}
我的 Ansible ymal 看起来像。
tasks:
- name: debug url
debug:
msg: "{{ g_url }}"
- name: GET data from google spead sheet api
uri:
url: "{{ g_url }}"
return_content: yes
dest: /tmp/o_gd_form.json
register: google_data
- name: whats the dump?
debug:
var: "{{ item.0 |to_json }}"
with_items: "{{ google_data.json.values() }}" # this is the line that needs to be fixed
响应 json 看起来像:
{
"range": "Sheet1!A1:D5",
"majorDimension": "ROWS",
"values": [
["Item", "Cost", "Stocked", "Ship Date"],
["Wheel", ".50", "4", "3/1/2016"],
["Door", "", "2", "3/15/2016"],
["Engine", "0", "1", "30/20/2016"],
["Totals", "5.5", "7", "3/20/2016"]
],
}
我似乎无法弄清楚如何将 with_items
写入 return 和 json 的 {{ item }}
,例如 ["Engine", "0", "1", "30/20/2016"]
。
任何帮助或我是否需要将此任务拆分给某些中间件解析器?
Google 张 api 文档位于:
要得到你想要的,使用:
- debug: msg="Name={{ item.0 }} Cost={{ item.1 }}"
with_list: "{{ google_data.json['values'] }}"
你的代码有两个问题:
values
是一个特殊的关键字,所以你不能访问json.values
,而应该使用json['values']
。
with_items
将列表列表展平,因此您最终会得到一长串字符串。您应该使用 with_list
迭代外部列表(行)并获取内部列表(列值)作为项目。
我正在使用 Google Sheets V4 Values 集合,但我无法弄清楚如何将每一行解析为 {{ item }}
我的 Ansible ymal 看起来像。
tasks:
- name: debug url
debug:
msg: "{{ g_url }}"
- name: GET data from google spead sheet api
uri:
url: "{{ g_url }}"
return_content: yes
dest: /tmp/o_gd_form.json
register: google_data
- name: whats the dump?
debug:
var: "{{ item.0 |to_json }}"
with_items: "{{ google_data.json.values() }}" # this is the line that needs to be fixed
响应 json 看起来像:
{
"range": "Sheet1!A1:D5",
"majorDimension": "ROWS",
"values": [
["Item", "Cost", "Stocked", "Ship Date"],
["Wheel", ".50", "4", "3/1/2016"],
["Door", "", "2", "3/15/2016"],
["Engine", "0", "1", "30/20/2016"],
["Totals", "5.5", "7", "3/20/2016"]
],
}
我似乎无法弄清楚如何将 with_items
写入 return 和 json 的 {{ item }}
,例如 ["Engine", "0", "1", "30/20/2016"]
。
任何帮助或我是否需要将此任务拆分给某些中间件解析器?
Google 张 api 文档位于:
要得到你想要的,使用:
- debug: msg="Name={{ item.0 }} Cost={{ item.1 }}"
with_list: "{{ google_data.json['values'] }}"
你的代码有两个问题:
values
是一个特殊的关键字,所以你不能访问json.values
,而应该使用json['values']
。with_items
将列表列表展平,因此您最终会得到一长串字符串。您应该使用with_list
迭代外部列表(行)并获取内部列表(列值)作为项目。