Как решить нулевой возврат?

Отказ от ответственности Я новичок в программировании, а также не очень хорошо говорю по-английски, поэтому, пожалуйста, извините за мое плохое объяснение.

У меня есть этот код:

function SearchAttributebyName(ID){
  var SheetDatabase = SpreadsheetApp.openById("SS ID");
  var Sheet = SheetDatabase.getSheetByName("Sheet1");
  var Cell = Sheet.getRange("A3:A");
  var Value = Cell.getValues().map(x => x[0]);
  Logger.log(Value.length);

  Value.forEach((elements, i) => {
    if (elements == ID) {
      let baris = i + 3;
      let name = Sheet.getRange(baris,1,1,1).getValues();
      let A= Sheet.getRange(baris,15,1,1).getValues();
      let B= Sheet.getRange(baris,16,1,1).getValues();
      let C= Sheet.getRange(baris,17,1,1).getValues();
      let D= Sheet.getRange(baris,4,1,1).getValues();
      let E= Sheet.getRange(baris,21,1,1).getValues();
      let F= Sheet.getRange(baris,22,1,1).getValues();
      let G= Sheet.getRange(baris,11,1,1).getValues();
      let H= Sheet.getRange(baris,12,1,1).getValues();
      let I= Sheet.getRange(baris,7,1,1).getValues();
      let J= Sheet.getRange(baris,8,1,1).getValues();
      let K= Sheet.getRange(baris,9,1,1).getValues();
      let L= Sheet.getRange(baris,27,1,1).getValues();
      let M= Sheet.getRange(baris,5,1,1).getValues();
      
      return "✅ DATA OF " + name + ": " + "\n" + "\n" +
             "DataA : " + A+ "\n" +
             "DataB : " + B + "\n" +
             "DataC : " + C + "\n" +
             "DataD : " + D + "\n" +
             "DataE : " + E + "\n" +
             "DataF : " + F + "\n" +
             "DataG : " + G + "\n" +
             "DataH : " + H + "\n" +
             "DataI: " + I + "\n" +
             "DataJ : " + J + "\n" +
             "DataK : " + K + "\n" +
             "DataL : " + L + "\n" +
             "DataM : " + M;
    }
    return "DATA NOT FOUND";
  });
}

function trythebot() {
  Logger.log(SearchAttributebyODPName("XXXXXXX"));
}

Это отлично работает, когда я проверяю функцию SearchAttributebyName с помощью Logger.log. Но когда я проверяю функцию SearchAttributebyName с помощью функции trythebot, я продолжаю получать результат null. пожалуйста помоги.

Поведение ключевого слова "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) для оценки ваших знаний,...
0
0
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вам нужно небольшое изменение, SearchAttributebyName на самом деле ничего не возвращает, потому что сам цикл forEach не имеет оператора возврата.

Вот возможный подход

function SearchAttributebyName(ID) {
    var SheetDatabase = SpreadsheetApp.openById("SS ID");
    var Sheet = SheetDatabase.getSheetByName("Sheet1");
    var Cell = Sheet.getRange("A3:A");
    var Value = Cell.getValues().map((x) => x[0]);
    Logger.log(Value.length);

    let result;
    Value.forEach((elements, i) => {
        if (elements == ID) {
            let baris = i + 3;
            let name = Sheet.getRange(baris, 1, 1, 1).getValues();
            let A = Sheet.getRange(baris, 15, 1, 1).getValues();
            let B = Sheet.getRange(baris, 16, 1, 1).getValues();
            let C = Sheet.getRange(baris, 17, 1, 1).getValues();
            let D = Sheet.getRange(baris, 4, 1, 1).getValues();
            let E = Sheet.getRange(baris, 21, 1, 1).getValues();
            let F = Sheet.getRange(baris, 22, 1, 1).getValues();
            let G = Sheet.getRange(baris, 11, 1, 1).getValues();
            let H = Sheet.getRange(baris, 12, 1, 1).getValues();
            let I = Sheet.getRange(baris, 7, 1, 1).getValues();
            let J = Sheet.getRange(baris, 8, 1, 1).getValues();
            let K = Sheet.getRange(baris, 9, 1, 1).getValues();
            let L = Sheet.getRange(baris, 27, 1, 1).getValues();
            let M = Sheet.getRange(baris, 5, 1, 1).getValues();

            result =  (
                "✅ DATA OF " +
                name +
                ": " +
                "\n" +
                "\n" +
                "DataA : " +
                A +
                "\n" +
                "DataB : " +
                B +
                "\n" +
                "DataC : " +
                C +
                "\n" +
                "DataD : " +
                D +
                "\n" +
                "DataE : " +
                E +
                "\n" +
                "DataF : " +
                F +
                "\n" +
                "DataG : " +
                G +
                "\n" +
                "DataH : " +
                H +
                "\n" +
                "DataI: " +
                I +
                "\n" +
                "DataJ : " +
                J +
                "\n" +
                "DataK : " +
                K +
                "\n" +
                "DataL : " +
                L +
                "\n" +
                "DataM : " +
                M
            );
        }
    });

    return result || "DATA NOT FOUND";
}

Метод Array.forEach() принимает функцию и запускает эту функцию для каждого элемента в массиве, который вы итерируете. Оператор return в функции просто позволяет .forEach() перейти к следующему элементу. Возвращаемое значение никуда не передается.

Вы можете заставить код работать, используя вместо этого Array.map(), например:

function test() {
  console.info(searchAttributebyName('XXXXXXX'));
}

function searchAttributebyName(name) {
  const sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  const indices = [1, 15, 16, 17, 4, 21, 22, 11, 12, 7, 8, 9, 27, 5]
    .map(index => index - 1);
  return sheet.getRange('A3:AA').getValues()
    .filter(row => row[0] === name)
    .map(row => reorderRow_(row, indices))
    .map(row => row.map((value, index) => `Data${index + 1}: ${value}`))
    .map(row => row.join('\n'))
    .join('\n\n') || `(no row matches ${name})`;
}


/**
* Returns a copy of a 1D array with values rearranged by indices
* and sliced to indices.length.
*
* @param {Object[]} row The row to rearrange.
* @param {Number[]} indices The indices to use when the 
* @return {Object[]} The rearranged row with length adjusted to indices.length.
*/
function reorderRow_(row, indices) {
  // version 1.0, written by --Hyde, 23 January 2022
  //  - see https://stackoverflow.com/q/75206328/13045193
  return indices.map(index => row[index]);
}

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

Отображение данных класса Google на веб-сайте с помощью скрипта приложения
Как подсчитать уникальные значения, которые присутствуют на двух разных листах, только если они существуют на обоих листах
Скрипт Google Apps — копирование и вставка значений на той же странице и в той же строке на основе критериев ячейки
Определить, в какую папку следует загрузить файл
Удалить строки после проверки текста в определенном столбце
Скрипты Google: у приложения Urlfetchapp с API Youtube возникли проблемы с загрузкой видео с разными владельцами в общую папку на диске. Обработка заброшена
Автоматизировать копирование значения из одной ячейки в другую в определенную дату
Добавление значений в определенную ячейку с помощью кода, продолжающегося до определенной ячейки с использованием цикла for
Адаптировать функции сценария GAS из электронной таблицы в веб-приложение
Сценарий приложений для проблемы с форматом даты и времени JSON