#javascript #json #google-apps-script #postman
Вопрос:
Поэтому я пытаюсь заполнить лист Google с помощью скрипта приложений. Я должен получить объект JSON от почтальона через ПОЧТУ. Объект будет отображаться как таковой:
{
"email":"jdoe@gmail.com",
"full_name": "John Doe",
"score": 4.0,
"max_score": 5.0
"attempt_starttime": "2021-09-21T03:28:13 0000",
"attempt_endtime":"2021-09-21T03:28:35 0000",
"invited_on":"2021-09-21T03:27:50 0000",
"percentage_score":100.0,
}
Мы предполагаем, что он всегда будет в таком формате и в таком порядке в обязательном порядке.
Затем данные изменяются и помещаются на этот лист:
Лист Google
Я хотел бы получить помощь в том, как сначала заполнить лист только данными из объекта JSON, так как у меня это не получается. Я верю, что оттуда я смогу изменить его для своих целей. Я также хотел бы знать, как я могу преобразовать временные метки в дни недель и выполнить вычитание из них. Я новичок как в сценарии приложений, так и в почтальоне, поэтому буду признателен за любую помощь.
Спасибо.
Это то, что у меня есть до сих пор:
function doPost(e) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ws = ss.getSheetByName("Sheet1");
const headers = ws.getRange(1, 1, 1, ws.getLastColumn()).getValues()[0];
const dataHeaders = headers.slice()
const body = e.postData.contents;
const jsonBody = JSON.parse(body);
const data = dataHeaders.map(h => jsonBody[h]);
ws.appendRow(data);
}
Комментарии:
1. Когда я увидел вашу электронную таблицу с изображения, мне показалось, что значения заголовка отличаются от объекта, который вы хотите отправить. Я думаю, что это может быть причиной вашей проблемы. Как насчет изменения значений заголовка с помощью ключей значения, которое вы хотите поместить? Или, как насчет создания объекта для замены значений заголовка и ключей?
2. Ваш json не исправлен, после max_score отсутствует запятая, а после percentage_score-дополнительная запятая!
Ответ №1:
Если вы хотите сохранить заголовки как есть, добавьте строку перед текущими заголовками с точным написанием, т. е. : полное имя, адрес электронной почты, оценка, максимальный балл, время начала попытки, время окончания попытки, приглашенный, процентный балл и исправьте свой json (исправьте ситуацию с запятыми) …
Например
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ws = ss.getSheetByName("Sheet1");
const dataHeaders = ws.getRange(1, 1, 1, ws.getLastColumn()).getValues()[0];
const body = `{
"email":"jdoe@gmail.com",
"full_name": "John Doe",
"score": 4.0,
"max_score": 5.0,
"attempt_starttime": "2021-09-21T03:28:13 0000",
"attempt_endtime":"2021-09-21T03:28:35 0000",
"invited_on":"2021-09-21T03:27:50 0000",
"percentage_score":100.0
}`
const jsonBody = JSON.parse(body);
const data = dataHeaders.map(h => jsonBody[h]);
ws.appendRow(data);
}