Как насчет этого примера сценария?Этот скрипт анализирует значения, полученные из API с помощью UrlFetchApp, и помещает их на лист «DATA».Вы можете запустить это в меню электронной таблицы.Перед запуском укажите конечную точку.
Пример сценария:
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('IMPORT DATA')
.addItem('KEENIO DATA', 'ReCalcCell')
.addItem('main', 'main')
.addToUi();
}
function main() {
var url = "###"; // Please put the endpoint with your token.
var res = UrlFetchApp.fetch(url).getContentText(); // Modified
var values = JSON.parse(res);
var putData = values.result.map(function(e) {return [e.useragent, e.sg_event_id, e.timestamp, e.ip, e.url, e.event, e.keen.timestamp, e.keen.created_at, e.keen.id, e.url_offset.index, e.url_offset.type, e.sg_message_id, e.email]});
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("DATA");
sheet.getRange(sheet.getLastRow() + 1, 1, putData.length, putData[0].length).setValues(putData);
}
Примечание:
- Когда вы используете это, укажите конечную точку, включая ваштокен на
url
. - Я подтвердил этот скрипт, используя объект JSON в вашем вопросе.Поэтому, если структура объекта изменяется, необходимо также изменить скрипт.Пожалуйста, будьте осторожны.
Ссылка:
Если я неправильно понимаю вашувопрос, пожалуйста, скажите мне.Я хотел бы изменить его.
Редактировать 1:
Шаблон 1:
var putData = values.result.map(function(e) {return [e.useragent, e.sg_event_id, e.timestamp, e.ip, e.url, e.event, e.keen.timestamp, e.keen.created_at, e.keen.id, JSON.parse(e["url_offset"]).index, JSON.parse(e["url_offset"]).type, e.sg_message_id, e.email]});
Шаблон 2:
var putData = values.result.map(function(e) {return [e.useragent, e.sg_event_id, e.timestamp, e.ip, e.url, e.event, e.keen.timestamp, e.keen.created_at, e.keen.id, e["url_offset"].index, e["url_offset"].type, e.sg_message_id, e.email]});
Редактировать 2:
Не могли бы вы запустить этот скрипт и указать значения созданного файла?Конечно, удалите личную информацию.Но, пожалуйста, не изменяйте структуру объекта.Если вы не можете этого сделать, я хотел бы подумать о других способах.
var url = "###"; // Please put the endpoint with your token.
var res = UrlFetchApp.fetch(url).getContentText();
DriveApp.createFile("sample.txt", res, MimeType.PLAIN_TEXT)
Редактировать 3:
Пожалуйста, скопируйте и вставьте этот скрипт в ваш редактор скриптов, запустите myFunction ().Затем, пожалуйста, покажите значения файла.Когда вы запустите эту функцию, убедитесь, что в вашем проекте НЕ используется одно и то же имя функции.
function myFunction() {
var url = "###"; // Please put the endpoint with your token.
var res = UrlFetchApp.fetch(url).getContentText();
DriveApp.createFile("sample.txt", res, MimeType.PLAIN_TEXT)
}
Редактировать 4:
Скопируйте и вставьте этот скрипт в редактор скриптов, запуститеmyFunction2 ().Тогда, пожалуйста, покажите результаты.Когда вы запустите эту функцию, убедитесь, что в вашем проекте НЕ используется одно и то же имя функции.
Убедитесь, что получены ключи и значения keen
и url_offset
.
function myFunction2() {
var url = "###";
var res = UrlFetchApp.fetch(url).getContentText();
var values = JSON.parse(res);
for (var key in values.result[0]) {
Logger.log("key: %s, value: %s", key, values.result[0][key])
if (typeof values.result[0][key] == "object") {
for (var dkey in values.result[0][key]) {
Logger.log("key: %s, dkey: %s, value: %s", key, dkey, values.result[0][key][dkey])
}
}
}
}
Редактировать 5:
Пожалуйста, скопируйте и вставьте этот скрипт в ваш редактор скриптов, запустите myFunction3 ().Тогда, пожалуйста, покажите результаты.Когда вы запустите эту функцию, убедитесь, что в вашем проекте НЕ используется одно и то же имя функции.
function myFunction3() {
var url = "###"; // Please set this.
var res = UrlFetchApp.fetch(url).getContentText();
var values = JSON.parse(res);
var obj = [];
for (var i = 0; i < values.result.length; i++) {
var temp = {};
var v = values.result[i];
for (var key in v) {
temp[key.replace(/_/g, "")] = v[key];
if (typeof v[key] == "object") {
for (var dkey in v[key]) {
temp[key.replace(/_/g, "") + dkey.replace(/_/g, "")] = v[key][dkey];
}
}
}
obj.push(temp);
}
var putData = obj.map(function(e) {return [e.useragent, e.sgeventid, e.timestamp, e.ip, e.url, e.event, e.keentimestamp, e.keencreatedat, e.keenid, e.urloffsetindex, e.urloffsettype, e.sgmessageid, e.email]});
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("DATA");
sheet.getRange(sheet.getLastRow() + 1, 1, putData.length, putData[0].length).setValues(putData);
}