Estou tentando extrair valores específicos de uma resposta JSON da API para uma Planilha Google usando a API do Cloud Identity, especificamente a parte de políticas. A resposta da API está funcionando e estou obtendo os valores que quero de volta, só não consigo fazer com que ela adicione todas as respostas a 228 linhas em uma Planilha Google, pois estou com problemas para preencher as linhas. Só consigo preencher a linha A2 e nada mais. Acho que é um problema com o loop for, mas não consigo descobrir. Mostrarei o código, a resposta JSON de exemplo e a planilha abaixo. Qualquer ajuda será bem-vinda.
function get_settings(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const settingsSheet = ss.getSheetByName("07. settings api");
const api_key = PropertiesService.getScriptProperties().getProperty('apikey');
var url = "https://cloudidentity.googleapis.com/v1beta1/policies?key=" + api_key;
const params = {
headers: {
"Authorization": 'Bearer ' + ScriptApp.getOAuthToken()
}
};
var response = UrlFetchApp.fetch(url, params);
var data = response.getContentText();
var json = JSON.parse(data);
for (let i = 0; i < 229; i++){
let settingsData = [];
settingsData.push(json.policies[0].name);
settingsData.push(json.policies[0].setting.type);
settingsData.push(json.policies[0].setting.value.serviceState);
settingsData.push(json.policies[0].setting.value.enableAccountRecovery);
//console.log(settingsData);
let ssdata = [];
ssdata.push(settingsData);
let targetRange = settingsSheet.getRange('A2:A229');
targetRange.setValues(ssdata);
}
}
Resposta JSON
{
"policies": [
{
"name": "policies/axynr375bw46nm5dcsjnvrfpuefam",
"customer": "customers/C03r7ld3j",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('03ph8a2z32dhpy9'))",
"orgUnit": "orgUnits/03ph8a2z32dhpy9",
"sortOrder": 101
},
"setting": {
"type": "settings/security.super_admin_account_recovery",
"value": {
"enableAccountRecovery": true
}
},
"type": "SYSTEM"
},
{
"name": "policies/axynr375bw46nm5dctezjp4byyksa",
"customer": "customers/C03r7ld3j",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('03ph8a2z32dhpy9')) && entity.licenses.exists(license, license in ['/product/101034/sku/1010340001','/product/Google-Apps/sku/1010020020','/product/Google-Apps/sku/1010020025','/product/Google-Apps/sku/1010020026','/product/Google-Apps/sku/1010020027','/product/Google-Apps/sku/1010020028','/product/Google-Apps/sku/1010020030','/product/Google-Apps/sku/1010020031'])",
"orgUnit": "orgUnits/03ph8a2z32dhpy9",
"sortOrder": 101
},
"setting": {
"type": "settings/gmail.email_spam_filter_ip_allowlist",
"value": {
"allowedIpAddresses": [
"172.217.25.142"
]
}
},
"type": "SYSTEM"
},
{
"name": "policies/axynr375bxlm5l5gc6cib7vrw4lsg",
"customer": "customers/C03r7ld3j",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('03ph8a2z32dhpy9'))",
"orgUnit": "orgUnits/03ph8a2z32dhpy9",
"sortOrder": 101.00002
},
"setting": {
"type": "settings/play_console.user_takeout",
"value": {
"takeoutStatus": "ENABLED"
}
},
"type": "SYSTEM"
},
{
"name": "policies/axynr375bwa3nh5uckijlmho3afcg",
"customer": "customers/C03r7ld3j",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('03ph8a2z32dhpy9'))",
"orgUnit": "orgUnits/03ph8a2z32dhpy9",
"sortOrder": 101.00005
},
"setting": {
"type": "settings/blogger.user_takeout",
"value": {
"takeoutStatus": "ENABLED"
}
},
"type": "SYSTEM"
},
{
"name": "policies/axynr375bx2oz6wsbpunrgxt7qbcg",
"customer": "customers/C03r7ld3j",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('03ph8a2z32dhpy9'))",
"orgUnit": "orgUnits/03ph8a2z32dhpy9",
"sortOrder": 101.00016
},
"setting": {
"type": "settings/books.user_takeout",
"value": {
"takeoutStatus": "ENABLED"
}
},
"type": "SYSTEM"
},
{
"name": "policies/axynr375bwi5l5wvb2t335wn7mlsg",
"customer": "customers/C03r7ld3j",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('03ph8a2z32dhpy9'))",
"orgUnit": "orgUnits/03ph8a2z32dhpy9",
"sortOrder": 101.00021
},
"setting": {
"type": "settings/location_history.user_takeout",
"value": {
"takeoutStatus": "ENABLED"
}
},
"type": "SYSTEM"
},
{
"name": "policies/axynr375bx25ndwad3wz7ehl3mkcg",
"customer": "customers/C03r7ld3j",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('03ph8a2z32dhpy9'))",
"orgUnit": "orgUnits/03ph8a2z32dhpy9",
"sortOrder": 101.00025
},
"setting": {
"type": "settings/play.user_takeout",
"value": {
"takeoutStatus": "ENABLED"
}
},
"type": "SYSTEM"
}
Pontos de modificação:
json.policies[0]
é sempre empurrado parasettingsData
, essdata
tem apenas um elemento. E,ssdata
é tentado ser colocado emsettingsSheet.getRange('A2:A229')
. Isso é executado em cada loop. Com isso, apenas uma linha é colocada em cada loop. Imaginei que esse poderia ser o motivo do seu problema atual.Quando esses pontos estiverem refletidos no seu roteiro, que tal a seguinte modificação?
Script modificado:
json.policies
são colocados na planilha como linhas.Referência: