Я разрабатываю веб-приложение 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
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Из вашей ситуации я догадался, что в вашей ситуации гиперссылка может быть не в виде формулы =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://###"}]},