Как прочитать базовую ссылку в ячейке с помощью Node и API Google Sheets v4?

Я разрабатываю веб-приложение node.js на GCP App Engine, и часть его требует чтения листа Google. Некоторые ячейки на этом листе имеют обычный текст, а затем базовую ссылку (поэтому в ячейке может быть написано «ссылка», но при наведении на нее курсора вы увидите URL-адрес «www.url.com».) Я пытался возиться с параметр «valueRenderOption», но, похоже, он ничего не делает, я всегда просто получаю простое текстовое значение ячейки. Кто-нибудь знает, как получить базовый URL? Код, который я использую, приведен ниже. Спасибо!

const auth = new google.auth.GoogleAuth({
  keyFile: "./keys/key.json", //the key file
  scopes: "https://www.googleapis.com/auth/spreadsheets", 
});
const authClientObject = await auth.getClient();
const googleSheetsInstance = google.sheets({ version: "v4", auth: authClientObject });

const spreadsheetId = ""

const readData = await googleSheetsInstance.spreadsheets.values.get({
  auth, //auth object
  spreadsheetId, // spreadsheet id
  range: "Sheet!D:D", //range of cells to read from.
  valueRenderOption: "FORMULA", // get formatted text
});
Поведение ключевого слова "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
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Из вашей ситуации я догадался, что в вашей ситуации гиперссылка может быть не в виде формулы =HYPERLINK("https://###/","link"), а может быть напрямую установлена ​​гиперссылка на ячейку. Если я правильно понимаю, гиперссылки не могут быть получены с помощью «Метода: электронные таблицы.значения.получить». В этом случае необходимо использовать «Метод: Spreadsheets.get».

Когда это отражено в вашем сценарии, как насчет следующей модификации?

От:

const readData = await googleSheetsInstance.spreadsheets.values.get({
  auth, //auth object
  spreadsheetId, // spreadsheet id
  range: "Sheet!D:D", //range of cells to read from.
  valueRenderOption: "FORMULA", // get formatted text
});

К:

const res = await googleSheetsInstance.spreadsheets.get({
  auth, //auth object
  spreadsheetId,
  ranges: "Sheet!D:D",
  fields: "sheets(data(rowData(values(hyperlink,userEnteredValue))))",
});
const obj = JSON.stringify(res.data.sheets[0].data[0].rowData;
console.info(obj));
  • При такой модификации получается следующий результат. Вы можете получить гиперссылку со свойством hyperlink.

    [
      {"values":[{"userEnteredValue":{"stringValue":"sample1"}}]},
      {"values":[{"userEnteredValue":{"stringValue":"link"},"hyperlink":"https://###"}]},
      ,
      ,
      ,
    ]
    
  • Например, когда гиперссылка помещается с использованием формулы HYPERLINK, включается следующее значение.

    {"values":[{"userEnteredValue":{"formulaValue":"=HYPERLINK(\"https://###",\"link\")"},"hyperlink":"https://###"}]},
    

Использованная литература:

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