Есть ли способ передать переменную в качестве значения в API листов Google?

Я новичок в программировании (просто предупреждаю, заранее извиняюсь за ужасный код). Я создаю инструмент, чтобы мой работодатель мог в основном загружать CSV-файл с данными, связанными с маркетинговыми показателями, и он будет обновлять внешний google лист, который мы используем для представления маркетинговых показателей клиенту.

Проблема, с которой я сталкиваюсь, заключается в значении, которое я пытаюсь отправить на лист Google. Всякий раз, когда я использую строку, данные отправляются без проблем, но когда я загружаю свой тестовый CSV, значение регистрируется в консоли, но не передается в листы Google (это просто пусто, ничего нового на листе.)

Я также пытался просто передать необработанную переменную, и я получаю сообщение об ошибке: «Недопустимые значения [5] [0]: list_value {}»»

Есть ли способ отправить finalResult в листы Google?

Я пробовал следующие вещи, чтобы разобраться с этим:

  1. Я попытался преобразовать переменную в строку (это моя самая последняя настройка, представленная ниже)
  2. Я попытался создать новую переменную (finalReach), равную DCJRtotalreach.
  3. Я также пытался использовать исходную переменную DCJRtotalreach.

Что, я думаю, мне нужно сделать, так это преобразовать мою переменную в массив с переменной finalResult в качестве моего единственного значения в этой строке, а затем, возможно, передать «имя массива [0]» в разделе значений? Но для меня это не имело бы смысла, потому что у вас есть массив внутри массива, верно? Мой мозг взрывается, потому что здесь мои знания более ограничены на этом фронте.

Я благодарен за любой вклад/совет. Спасибо!

//This is where papa parse parses the data, the reason for so many arrays is that there are multiple cells that need to be parsed and then added at the end to provide a total amount. 

const DCJRtotalreach = [];
const uploadConfirm = document.getElementById('submit').addEventListener('click', () => {
    Papa.parse(document.getElementById('magfile').files[0],
    {
        download: true,
        header: false,
        skipEmptyLines: true,
        complete: function(resultsa){
            var reach1Array = resultsa.data[2];
            var reach1 = reach1Array.slice(1, 2);
            var arrayParse1 = reach1.map((x) => parseInt(x));

            var reach2Array = resultsa.data[3];
            var reach2 = reach2Array.slice(1, 2);
            var arrayParse2 = reach2.map((x) => parseInt(x));

            var reach3Array = resultsa.data[4];
            var reach3 = reach3Array.slice(1, 2);
            var arrayParse3 = reach3.map((x) => parseInt(x));

            var reach4Array = resultsa.data[5];
            var reach4 = reach4Array.slice(1, 2);
            var arrayParse4 = reach4.map((x) => parseInt(x));
            
            var reach5Array = resultsa.data[6];
            var reach5 = reach5Array.slice(1, 2);
            var arrayParse5 = reach5.map((x) => parseInt(x));

            var reach6Array = resultsa.data[7];  
            var reach6 = reach6Array.slice(1, 2);
            var arrayParse6 = reach6.map((x) => parseInt(x));

            //This is where I am taking each cell's data and creating a sum value

            DCJRWHtotalReach = arrayParse1[0] + arrayParse2[0] + arrayParse3[0] + arrayParse4[0] + arrayParse5[0] + arrayParse6[0]
            console.info(String(DCJRWHtotalReach));
            const finalResult = DCJRtotalreach;

            // This is where I have set up my values to send this data to google sheets. 

    async function WHDCJRmetrics () {
      return response = await gapi.client.sheets.spreadsheets.values.update({
          "spreadsheetId": "THIS IS WHERE I KEEP MY SPREADSHEET ID",
          "range": "Sheet1!C6",
          "includeValuesInResponse": true,
          "responseDateTimeRenderOption": "FORMATTED_STRING",
          "responseValueRenderOption": "FORMATTED_VALUE",
          "valueInputOption": "RAW",
          "resource": {
           "values": [
           [
               String(finalResult) //This is meant to be passed as a string but is not functioning, however this DOES work if I put "hello world" for an example.
              ]
           ]
                  }
                      });

        }
   WHDCJRmetrics();
        }       
    });
});
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда я увидел ваш сценарий, мне показалось, что finalResult это DCJRtotalreach. И DCJRtotalreach объявляется как const DCJRtotalreach = [];. В вашем скрипте DCJRtotalreach всегда пусто. При этом "values": [[]] используется в качестве значения. При этом ставится пустое значение. Я подумал, что это может быть причиной вашей текущей проблемы. Если вы хотите поместить значение DCJRWHtotalReach в ячейку «Лист1! C6», как насчет следующей модификации?

От:

"valueInputOption": "RAW",
"resource": {
 "values": [
 [
     String(finalResult) //This is meant to be passed as a string but is not functioning, however this DOES work if I put "hello world" for an example.
    ]
 ]

К:

"valueInputOption": "USER_ENTERED",
"resource": { "values": [[DCJRWHtotalReach]] }
  • Благодаря этой модификации числовое значение DCJRWHtotalReach помещается в ячейку «Лист1! C6».

Примечание:

  • Эта модификация предполагает, что ваш gapi.client.sheets.spreadsheets.values.update отлично работает для размещения в вашей электронной таблице Google с помощью Sheets API. Пожалуйста, будьте осторожны с этим.

  • Когда я протестировал модифицированный сценарий вашего сценария, используя образец значения, ошибок не возникло, и я подтвердил, что значение DCJRWHtotalReach можно поместить в ячейку «Лист1!C6». Но, если возникает ошибка, подтвердите значение DCJRWHtotalReach еще раз. И, если ошибка возникает в другой части, укажите пример значения resultsa для правильного воспроизведения проблемы. Этим я хотел бы подтвердить это.

Спасибо за ваш ответ! Я изменил код в соответствии с вашими рекомендациями, и он прошел и заработал. Большое спасибо за Вашу помощь. Ваш ответ также помог очистить часть моей структуры кода, так что спасибо и за это. Ваше здоровье!

tydigi 08.05.2023 14:57

Другие вопросы по теме