the output.
Enums
FORMATTED_VALUE Values will be calculated & formatted in the reply according to the cell's formatting. Formatting is based on the spreadsheet's locale, not the requesting user's locale. For example, if A1 is 1.23 and A2 is =A1 and formatted as currency, then A2 would return "$1.23".
UNFORMATTED_VALUE Values will be calculated, but not formatted in the reply. For example, if A1 is 1.23 and A2 is =A1 and formatted as currency, then A2 would return the number 1.23.
FORMULA Values will not be calculated. The reply will include the formulas. For example, if A1 is 1.23 and A2 is =A1 and formatted as currency, then A2 would return "=A1".
---
DateTimeRenderOption
Determines how dates should be rendered in the output.
Enums
SERIAL_NUMBER Instructs date, time, datetime, and duration fields to be output as doubles in "serial number" format, as popularized by Lotus 1-2-3. The whole number portion of the value (left of the decimal) counts the days since December 30th 1899. The fractional portion (right of the decimal) counts the time as a fraction of the day. For example, January 1st 1900 at noon would be 2.5, 2 because it's 2 days after December 30st 1899, and .5 because noon is half a day. February 1st 1900 at 3pm would be 33.625. This correctly treats the year 1900 as not a leap year.
FORMATTED_STRING Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which is dependent on the spreadsheet locale).
*/
function get(id, range, valueRenderOption) {
let get_params = '/' + id + '/values/' + encodeURIComponent(range) + '?'
+ '&valueRenderOption=' + (valueRenderOption ? valueRenderOption : 'FORMATTED_VALUE')
+ '&dateTimeRenderOption=SERIAL_NUMBER'
// + '&majorDimension=ROWS'
let api_url = sheets_api_url + get_params;
let params = {
method: "GET",
muteHttpExceptions: true,
headers: {
Authorization: "Bearer " + ScriptApp.getOAuthToken(),
'Accept': "application/json;"
}
};
return wrapp(api_url, params, id, range);
}
function update(id, range, values) {
let get_params = '/' + id + '/values/' + encodeURIComponent(range)
+ '?valueInputOption=USER_ENTERED';
let api_url = sheets_api_url + get_params;
let data = {
'range': range,
'majorDimension': 'ROWS',
'values': values
};
let params = {
method: "PUT",
muteHttpExceptions: true,
contentType: 'application/json',
payload: JSON.stringify(data),
headers: {
Authorization: "Bearer " + ScriptApp.getOAuthToken(),
'Accept': "application/json;"
}
};
return wrapp(api_url, params, id, range);
}
function clear(id, range) {
let get_params = '/' + id + '/values/' + encodeURIComponent(range) + ":clear";
let api_url = sheets_api_url + get_params;
let params = {
method: "POST",
muteHttpExceptions: true,
headers: {
Authorization: "Bearer " + ScriptApp.getOAuthToken(),
'Accept': "application/json;"
}
};
return wrapp(api_url, params, id, range);
}
function retry(n, func, ...args) {
for (let i = 0; i < Math.min(n, 9); i++) {
try {
return func(...args)
} catch (e) {
Logger.log("Retry " + (i + 1) + " failed, waiting")
Logger.log(e)
Utilities.sleep(2 ** i * 1000)
}
}
throw "Number of tries exceeded, aborting"
}
function wrapp(api_url, params, id, range) {
const wrapper = _ => {
response = UrlFetchApp.fetch(api_url, params);
console.log(response);
response = JSON.parse(response);
if (!response.hasOwnProperty('range') && !response.hasOwnProperty('spreadsheetId')) {
throw JSON.stringify(response)
}
return response
}
var response = retry(3, wrapper)
console.log(['success ', id, range])
return response.values;
}
весь текст одного из файлов собиратора сюда кидать не нужно
но перед моими глазами такая картина
+ мне нужно логиниться не из гугл скриптов, а с node.js через импорт модуля googleapis и я за вечерок с чатиком и докой шустренько накидал телеграм бота, который парсит мне мою табличку товаров и выдаёт в телеграм сообщение по товарам также в процессе узнал прикол, хотя наверняка все знают это, что можно как бы транспонировать данные, выдавать двумерный массив как по строкам [[1,2,3],["яблоко","груша","лимон"]] так и по столбцам [[1,"яблоко"],[2,"груша"],[3,"лимон"]] хотя даже не задумывался что это возможно
Это есть в описании методов апи таблиц)
Написать в гугле node js + sheets api уже предлагали? Это будет даже проще, чем код в собираторе, можно будет использовать существующую библиотеку. В гас мы ограничены тем, что библиотек почти нет и все пишется руками под задачу (для тех же телеграм ботов), а вот во взрослом программировании этой проблемы уже не стоит)
Только для тг ботов как минимум пару либ знаю
Тоже знаю, но сыроваты пока
но суть разговора в чём я с чат gpt с нулём знаний разобрался как обращаться sheets api через node.js и делать остальные действия он по пунктам провёл меня и я доискивал по ходу дела информацию в доке и ютубе (с сервисным аккаунтом и прочим)
Обсуждают сегодня