Вопросы с тегами [google-sheets]

1

голосов
3

ответ
26

Просмотры

Формула для подсчета числа простых чисел в определенном диапазоне в Google Таблицах

Я новичок в Google Sheets формул, так что я ничего в этой области не знаю. Мне нужно знать формулу, которая возвращает количество простых чисел. Я очень уверены, что алгоритмы проверки простоты не очень простые (я никогда не сделал один раньше).
Mr.YouKnowWhoIAm
0

голосов
0

ответ
3

Просмотры

Как вставить флажок в данной ячейке, когда один будет удален

Я ищу, чтобы создать сценарий, который заменяет флажки в заданных столбцах, когда они будут удалены. Ниже приводится изображение с изображением моей установки. Я хотел бы это так, когда строка удаляется только столбцы с флажками будут заменены флажками снова. Изображение листа Я ищу, чтобы заменить только меченые столбцы с флажками после удаления. К сожалению, Google Sheets не имеет возможности сохранения проверки данных, когда пользователь удаляет его. Спасибо за помощь.
brendann755
1

голосов
1

ответ
164

Просмотры

проходя несколько аргументов в addCallBackElement Google Script

Есть ли способ, чтобы добавить несколько аргументов в функцию addCallBackElement () в скриптах Google? Я хочу, чтобы передать информацию о том, что пользователь ввел в данном текстовом поле, а также целое число. Могу ли я отправить оба эти? Если нет, то есть ли способ, что я могу видеть то, что пользователь вводит в текстовое поле, фактически не имея функцию обработчика? Спасибо! . Например: вар обработчик кола = 0 переменных = app.createServerHandler ( 'myClickHandler') addCallbackElement (TextBox, количество);
Ethan Goldberg
1

голосов
2

ответ
144

Просмотры

Результаты формулы ImportHTML в Google Таблицах, если начинается с 0. 0. пропускается

Я хочу, чтобы получить в Sheets ячейке Google, значение в cryptocoin на определенную дату. Так что я, например, следующий URL, который показывает цены (открытая, высокие, низкие, близкие) волн criptocurrency на 15 декабря: Ссылка Так с = INDEX (ImportHTML ( "https://coinmarketcap.com/currencies ? / Волны / историко- данные / старт = 20171215 & конца = 20171215 "" стол ", 1); 2; 2) Я получаю открывающуюся цену с этим URL. В этом случае: 13,55 Но я не знаю, почему, когда результирующее значение начинается с 0 точки, он пропускает эту часть (0 очков). С по следующей формуле: = INDEX (ImportHtml ( "https://coinmarketcap.com/currencies/Ripple/historical-data/?start=20171215&end=20171215", "таблица"; 1); 2; 2) я получаю 861760 в то время как цена открытия в адресе: 0.861760 Я не»
Egidi
1

голосов
0

ответ
68

Просмотры

Есть ли способ, чтобы указать доверенные происхождение для почтовых запросов в веб-приложение Google?

Скажем, я создал Google простыню, чтобы захватить адреса электронной почты пользователя. На моем сайте есть небольшая форма и после нажатия кнопки отправить щелкают и запрос Ajax для веб-приложения Google, который записывает данные в лист обжигают: // Выделим и кэш все поля вар $ входами = $ form.find ( "ввод, выберите кнопку, текстовое поле"); // Сериализация данные в виде вар serializedData = $ form.serialize (); // выпалить запрос запроса = $ .ajax ({URL: https://script.google.com/macros/s/longURLcode/exec, типа: "пост", данные: serializedData}); В сценарии Google теперь использовать doPost (е) или doGet (е), чтобы справиться с любым входящим запросом HTTP. Чтобы разрешить эту работу как знак вверх разрешений механизм для веб-приложения должны быть установлены в (я думаю!?) Выполнить приложение, как: Me ([email protected]) Кто имеет доступ к приложению: Любой, даже анонимное Учитывая все на сайте скрипта Google настроено правильно, это работает как шарм. Так что случилось? Проблема: Любой человек может либо заглянуть в исходный код своего веб-страницы или использовать средства разработки для извлечения URL в веб-приложение Google после нажатия кнопку. Этот URL теперь может теоретически использоваться, чтобы затопить лист с бесчисленными (не определен) записей. Вопросы: 1) Есть ли способ ограничить общепринятую запрос HTTP к определенному происхождению? Я пытался сделать это путем получения доступа к HTTP-заголовки в пределах doPost (), но, кажется, нет никакого способа сделать это. 2) Является ли «Кто имеет доступ к приложению: Любой, даже анонимный» неправильный подход? Я думал, что это необходимо, так как вы можете выбрать только пользователей Google здесь и некоторые URL (mywebsite.com), казалось, попадают в категорию анонимных. 3) Я не думаю, что это возможно, но, может быть, я пропустил один из вариантов: Есть ли способ, чтобы НЕ подвергать Google веб-приложения URL для кого? Я думаю, не потому, что вы можете контролировать любые запросы с Девыми инструментами. 4) Является ли использование листов для сбора такого рода данных просто ужасная идея в целом (частично по указанным выше причинам), и я должен найти другое решение как можно скорее?
Felix
1

голосов
1

ответ
43

Просмотры

Как скопировать активный текст из Google Docs в таблицу с пунктом меню / опции

Я довольно новый для Google Apps, и я знаю, что подобные вопросы были заданы, но они только адресовать аналогичные проблемы. Я надеюсь, что вы можете мне помочь. Я хочу, чтобы скопировать активный текст из Документов Google для данной таблицы с помощью кнопки. Я сделал аналогично для таблицы в таблицу, но я неудачу на документы в электронную таблицу. функционировать OnOpen (е) {DocumentApp.getUi () .createMenu ( "Копировать активный диапазон.) .addItem ( 'Copy Button', 'Копировать') .addToUi (); } Функция копирования () {вар сс = DocumentApp.getActiveDocument (); Выбор вар = ss.getSelection (); вар TSS = SpreadsheetApp.openById ( "ххх"); вар ц = tss.getSheetByName ( "название"); trange = ts.getRange ( "B6: B6") selection.copyto (trange);
JoeL31
1

голосов
1

ответ
606

Просмотры

Как вы загрузите CSV файл в Google Таблицах с помощью Google листов ИПН с C #?

У меня есть метод, который тянет CSV с веб-сайта с помощью restsharp. класс ScheduledBilling {общественная строка Report () {вар клиент = новый RestClient ( "http://example.com"); client.CookieContainer = новый System.Net.CookieContainer (); client.Authenticator = новый SimpleAuthenticator ( "Имя пользователя", "ххх", "пароль", "ххх"); запрос вар = новый RestRequest ( "/ Логин", Method.POST); IRestResponse ответ = client.Execute (запрос); вар ScheduledBilling = client.DownloadData (новый RestRequest ( "/ файл)); вар CSV = System.Text.Encoding.Default.GetString (ScheduledBilling); возвращение (CSV);}} В основном, я использую смесь учебники и Quickstart, так что я могу ввести информацию в лист Google. //ScheduledCRMBilling.Report (); ScheduledCRMBilling OBJ = новый ScheduledCRMBilling (); Строка CSV = obj.Report (); Строка spreadsheetId2 = "ххх"; Строка range1 = "Запланированные Billing"; ValueRange valueRange1 = новый ValueRange (); valueRange1.MajorDimension = "РЯДЫ"; // "Строки"; // КОЛОННЫ вар oblist1 = новый список () {}; CSV SpreadsheetsResource.ValuesResource.UpdateRequest Update1 = service.Spreadsheets.Values.Update (valueRange1, spreadsheetId2, диапазон1); update1.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW; UpdateValuesResponse результат1 = update1.Execute (); Console.WriteLine ( "сделано!"); Я установить диапазон, чтобы быть весь лист (по расписанию фактуры). То, что происходит в том, что первая ячейка заполняется всей информацией в формате CSV, а не как если бы вы импортировать CSV в Google листов. Как я должен поступить? Я чувствую, как будто я должен передать переменную CSV в виде списка строк, которые будут размещать строки в каждой ячейке. Но тогда я не знаю, как он будет знать, когда пришло время для новой линии.
edwrdkm
1

голосов
0

ответ
14

Просмотры

Запуск кода из веб-приложение в листе сценария Google

Я пытаюсь создать бронирование номеров вещи для школы, что я работаю. Если я уеду лист Google не защищен очень легко для пользователей, чтобы уничтожить формулы в электронной таблице. Однако, если я заблокировать его только себе, то они не могут использовать электронную таблицу. Идея заключается в том, чтобы заблокировать редактирования себя и затем код запуска, как я. Я прочитал, что единственный способ для запуска кода, как я через веб-приложение. Я создал функцию doGet и когда я по ссылке на веб-приложение, это работает отлично, я получаю сообщение «успеха» и таблица меняется (в настоящее время doGet является проект только для проверки его функциональности). Однако, когда не используя команду ничего UrlFetchApp бывает у всех. Я уполномочил все, что было предложено. Пожалуйста, игнорируйте любые ненужные линии или плохое кодирование, я совершенно новый для этого. Любая помощь приветствуется. Функция OnOpen () {Ui = переменная SpreadsheetApp.getUi (); ui.createMenu ( 'Книжный номер') AddItem ( 'Книжный номер', 'пользовательский интерфейс') addToUi ()..; } Функция пользовательским интерфейсом () {вар приложение = UiApp.createApplication (); app.setTitle ( "RoomBooking"); вар панель = app.createVerticalPanel (); вар этикетка = app.createLabel (); вар текстовое поле = app.createTextBox (); textbox.setName ( "txt1"); Кнопка вар = app.createButton ( "Отправить"); Обработчик вар = app.createServerHandler ( "Clickevent"); button.addClickHandler (обработчик); handler.addCallbackElement (панель); panel.add (текстовое поле); panel.add (кнопка); app.add (панель); вар док = SpreadsheetApp.getActive (); doc.show (приложение); } Функция Clickevent (е) {запрос вар = UrlFetchApp.fetch ( "https://script.google.com/a/st-swithuns.portsmouth.sch.uk/macros/s/AKfycbwEsUsHJ2_1VwWqu1nTh1ux2FkEwP5ul2OXBc2pTQs8Z1eV_ls/exec"); вар приложение = UiApp.getActiveApplication (); вар textvalue = e.parameter.txt1; вар сс = SpreadsheetApp.getActiveSpreadsheet (); вар ш = SpreadsheetApp.getActiveSheet (); вар клеток = SpreadsheetApp.getActiveRange (); переменная строка = SpreadsheetApp.getActiveRange () GetRow () - 11.; вар столбец = SpreadsheetApp.getActiveRange () GetColumn () -2. если (строка 6 = || столбец = 8) {Browser.msgBox ( "Пожалуйста, выберите ячейку в сетке бронирования."); возвращение;} уаг finalcolumn = строка поиска * 7 + столбец 4-переменная = sh.getRange (1 , 26) .getValue (); вар finalrow = 1; вар лист = SpreadsheetApp.getActiveSpreadsheet () getSheetByName ( 'База данных').
1

голосов
0

ответ
362

Просмотры

При обновлении события календаря с Google сценария, как отправить уведомление

Из таблицы Google создать события с помощью Google Script. При создании событий я могу отправлять уведомления гостей. Один или несколько событий должны быть обновлены иногда (место изменение, добавление / удаление людей и т.д.). Обновления работают только я не могу найти, как отправить уведомление людей (не все гости будут в Google Calendar). Хотя я видел что-то в API, который может сделать трюк, я не знаю, если это возможно / как encorporate это в сценарии я написал. Пожалуйста, порекомендуйте. Обновление 20180130 @ 10: 39: Ошибка: недопустимый функция участник электронной почты sendInvite (calendarId, EVENTID, электронная почта) {вар п = eventId.indexOf ( "@") вар Str = eventId.substring (0, п) вар событий = Calendar.Events .get (calendarId, ул); Logger.log (event.attendees); если (event.attendees) {event.attendees.push ({электронная почта: адрес электронной почты}); } Еще {событие. чел = новый Array ({адрес электронной почты: адрес электронной почты}); } Logger.log ( '') Logger.log (event.attendees) Logger.log ( '') Logger.log (событие) = событие Calendar.Events.patch (событие, calendarId, ул, {sendNotifications: истинные}); } Журнал показывает после удаления identifiables: 18-01-30 10: 31: 27: 213 CET] [{responseStatus = needsAction, [email protected]}, {responseStatus = needsAction, [email protected]} ] [18-01-30 10: 31: 27: 214 CET] [18-01-30 10: 31: 27: 215 CET] [{responseStatus = needsAction, [email protected]}, {responseStatus = needsAction , [email protected]}, {электронная почта = некоторые @ something.com, некоторые @ something.com}] [18-01-30 10: 31: 27: 215 CET] [18-01-30 10:31 : 27: 216] {CET напоминания = {useDefault = истина}, резюме = тест 3, создатель = {DisplayName = MyName, само = верно, [email protected]}, вид = календарь # событие, htmlLink = HTTPS: //www.google.
Stefan van Aalst
1

голосов
1

ответ
1.7k

Просмотры

Создать форму Unique ID Google

У меня есть форма Google, которая заполняющий Ответы таблицы. У меня есть базовое понимание скриптов и запускать их. Я не совсем уверен, с чего начать на этом, хотя .. Пользователь отправляет форму и новая строка создается на строке (пример) 452 в таблице ответов. Ответы заполнить столбцы A до D. Я хотел бы столбец Е на этой новой строки должны быть заполнены «YES». Может кто-то помочь мне начать на этом, пожалуйста? Это моя Cude попытка кода: функция InsertID () {// этот скрипт запускается для запуска «From Spreadsheet» на «Form Submit» вар сс = SpreadsheetApp.getActiveSpreadsheet (); вар лист = ss.getActiveSheet (); вар LatestID = sheet.getRange (1, 6) .getValue () // ячейке F1 содержит последнюю идентификационный номер выдаваемой строки = newform.row клетки (строка,
John Cassell
1

голосов
1

ответ
501

Просмотры

Импорт XML в таблицы Google - Xpath - Элемент содержит текст

Я возился в течение нескольких часов, чтобы найти решение scrapa данных о 1000 продуктов в Google Spreadsheet. Вот пример исходного кода: Применение: Reistas Doel: Рейзен Объем: 25 л Материал: Полиэстер У меня есть список А.Л. URL, продуктов в колонке 1, а это, в столбце 2: = запрос (ImportXML (А1;» // дл // дт [содержит (text'Toepassing: ')] дд / ");" выберите * предел 1" ) результат # N / A (XML, не может быть разобрано). Причина Я использую «содержит текст», потому что список дл не соответствует. Некоторые из них имеют дополнительные, или меньше пунктов. Я использую это = запрос (ImportXml (A2; «/ дд // дл [2]»); «выберите * предел 1»), который действительно давал данные, но данные и столбцы заладились.
webblish
1

голосов
2

ответ
65

Просмотры

конкатенации динамических столбцов с помощью Google appscript

Я хочу, чтобы объединить столбцы, которые являются динамическими, используя appscript программно. Смотрите скриншот, что мои данные выглядит и то, что выход я пытаюсь достичь: я был в состоянии достигнуть конкатенацию статического / фиксированного нет. столбцов, используя код, приведенный ниже. Функция конкатенации () {вар сс = SpreadsheetApp.getActiveSpreadsheet (); вар SheetName = ss.getSheetByName ( "Лист1"); вар LR = sheetName.getLastRow (); вар LC = sheetName.getLastColumn (); вар rangeValue = sheetName.getRange (2, 1, Lr-1, ЛК) .getValues ​​(); для (вар я = 0; я
Bala
1

голосов
0

ответ
136

Просмотры

ImportXML + Selector Gadget(xPath) --> Soundcloud Followers to Google Sheets Not Working

Я пытаюсь использовать = ImportXml и Xpath (С помощью расширения выбора гаджет Chrome, так как я новичок в кодировании и XML является довольно сложным), чтобы скопировать число последователей данной страницы на лист Google. В идеале я хотел бы сделать это для тысяч учетных записей, которые я отслеживать. Я следовал за руководство, которое объясняет, как сделать это на Twitter, и я стараюсь, чтобы адаптировать его к Soundcloud. Мои опасения: Выбор правильного URL, из которого источника информации Получения правильного кода Xpath Это весь мой код, который получает ошибку формулы синтаксического анализа при выполнении на Google листы: = ImportXml ( "https://soundcloud.com/codexnaturae " "// * [содержит (CONCAT ("", @class ""), CONCAT ( "", "SC-граница-светло-вправо", "")) и (((Count (предшествующее-родственный: : *) + 1) = 1) и родитель :: )) И (((количество (предшествующее-родственный :: *) + 1) = 1) и родительского :: *)] // * [содержит (CONCAT ( "", @class ""), CONCAT ( "" , «SC-шрифт-табличный-свет», «»))] Я не смотрел на подобный вопрос, но с совершенно другим путем х и не показан на посте. Любая помощь будет принята с благодарностью. Даже просто указал мне в правильном направлении. Огромное спасибо заранее. )) И (((количество (предшествующее-родственный :: *) + 1) = 1) и родительского :: *)] // * [содержит (CONCAT ( "", @class ""), CONCAT ( "" , «SC-шрифт-табличный-свет», «»))] Я не смотрел на подобный вопрос, но с совершенно другим путем х и не показан на посте. Любая помощь будет принята с благодарностью. Даже просто указал мне в правильном направлении. Огромное спасибо заранее.
olivimot
1

голосов
1

ответ
2.9k

Просмотры

One Click гиперссылке в электронных таблицах Google

Есть ли способ в электронных таблицах Google, чтобы достичь URL только с одним щелчком мыши? прямо сейчас вам нужно 2 клика. Первый щелчок дает возможность изменить или Goto ссылку. Я хочу, чтобы для некоторых пользователей это идет непосредственно к ссылке. = ГИПЕРССЫЛКА (А3; "Урень registratie (ПЗ)")
Richard
1

голосов
0

ответ
391

Просмотры

Как обрабатывать ошибки таймаута, если Невер пользователя нажать на предупреждение?

У меня есть Google Таблицы Надстройки на котором используются диалоговые окна, предоставляемых службой App Script Ui, т.е. SpreadsheetApp.getUi (). Предупреждение (...). Как правило, это работает отлично, если пользователь не не выбирает опцию или закрыть оповещение в течение 5 минут (говорят, что они переключиться на другую вкладку или оставить свой компьютер), в этом случае кинули «Тайм-аут» исключение. Мой код: вар Ui = SpreadsheetApp.getUi (); вар ответ = ui.alert (MSG, ui.ButtonSet.YES_NO); Возвращение (ответ == ui.Button.YES); И ошибка в исполнении транскрипта Apps Script: [18-02-27 16: 40: 18: 080 EST] Начало выполнения [18-02-27 16: 40: 18: 096] EST SpreadsheetApp.getUi () [0 секунд ] [18-02-27 16: 45: 18: 160 EST] Ui.alert ([вы уверены, что хотите удалить эту вещь ?, YES_NO]) [300.063 секунд] [18-02-27 16:45:18 : 166 EST] Не удалось завершить выполнение Таймаут ожидания ответа пользователя (строка 289, файл «Код») [300.066 секунд Общее время выполнения] После того, как исключение, предупреждение остается видимым, а если пользователь возвращается и хиты «Да» выше функция еще не возвращает истину. Он просто закрывает диалог, и пользователь должен попробовать еще раз. Если бы я только добавить TRY / поймать вокруг предупреждения, пользователь не будет знать, что предупреждение становится бесполезным через 5 минут. В идеале я мог бы назвать что-то вроде alert.close (), но не существует никаких методов, как я могу найти. Есть ли лучший способ справиться с этим, или я должен просто переключиться на использование HTML / JavaScript для получения оповещений? Если бы я только добавить TRY / поймать вокруг предупреждения, пользователь не будет знать, что предупреждение становится бесполезным через 5 минут. В идеале я мог бы назвать что-то вроде alert.close (), но не существует никаких методов, как я могу найти. Есть ли лучший способ справиться с этим, или я должен просто переключиться на использование HTML / JavaScript для получения оповещений? Если бы я только добавить TRY / поймать вокруг предупреждения, пользователь не будет знать, что предупреждение становится бесполезным через 5 минут. В идеале я мог бы назвать что-то вроде alert.close (), но не существует никаких методов, как я могу найти. Есть ли лучший способ справиться с этим, или я должен просто переключиться на использование HTML / JavaScript для получения оповещений?
user1754115
1

голосов
0

ответ
37

Просмотры

Функция таблицы onEdit: заставить его работать для пользователей, не зарегистрированных в

Я хочу, чтобы автоматически сортировать столбец электронной таблицы Google автоматически после ввода изменяется. Я добился того, что с кодом ниже, и она работает. Вопрос: Есть ли способ добиться того, что код работает для всех accesssing листа (авторизованы и не вошли в систему)? Сейчас он просто работает для меня, когда я вошел. Я задаюсь вопросом о том, как я прочитал, что функция «onEdit» простой триггер, который не требует авторизации пользователя (https://productforums.google .com / форум / #! / тема Docs / BJd8zRYD1qU) Спасибо! Код: функция onEdit () {вар сс = SpreadsheetApp.getActiveSpreadsheet () вар лист Диапазон = ss.getSheetByName ( "Калькулятор") переменная = sheet.getRange ( "I11: x142") // Сортировка по значениям в столбце 9 диапазоне. сортировки ({колонка: 9, по возрастанию: ложь})}
Nerix Norin
1

голосов
0

ответ
443

Просмотры

Glitchy проверка данных на заказ Формула

= СЧЕТЕСЛИ (IMPORTRANGE ( "[spreadsheet_id]", "$ L: $ L"), L2)
Kid Diamond
1

голосов
1

ответ
47

Просмотры

Список уникальных пар, которые находятся в столбцах A, B, но не в C, D (набор A - множество В)

Я хочу, чтобы создать список пар, которые являются уникальными от суммированного A, B и C, D столбцов. Так что если А, В содержит (ааа, 111) и С, D содержит (ааа, 111), эта пара не будет в результате. Но если А, В содержит (ааа, 111) и С, D содержит (ааа, 000) или (ГЭБ, 111) и т.д. это значение будет в результате.
Paweł Faderewski
1

голосов
1

ответ
302

Просмотры

Почему вид фильтра нестандартном формулы не работают для этой формулы, которая определяет первую уникальную запись в колонке?

Пытаясь ответить на вопрос ковбоя, я наткнулся на следующее любопытное / разочарование ситуации. Скажем, в колонке А, у нас есть что-то вроде { «», «а», «б», «а», «с», «б»}. Если в столбце B, мы заполнить ячейки с формулой = ISERROR (матч (A2, A $ 1: ± 1,0)), начиная со второй строки, выход будет { «»; ИСТИНА; ИСТИНА; ЛОЖЬ; ИСТИНА; ЛОЖЬ } потому что формула проверка, если запись не произошла над ним. Но если мы будем использовать эту формулу в фильтр по условию с пользовательской формулой - с правильным индексом смещения, он не работает. Зачем? Правильный индекс смещения, я имею в виду, что фильтр по условию с пользовательской формулой итерацией формулы с позицией центрированной на ячейку ниже ячеек с настройкой вида фильтра. Почему это не документировано? Это может быть хорошим вопросом для поддержки Google (если она существует).
Argyll
1

голосов
0

ответ
1.5k

Просмотры

Работа вокруг для Google предела Листовая на ImportXml

Я пытаюсь импортировать данные в лист Google с помощью функции ImportXml. По-видимому, есть предел тому, сколько раз вы можете использовать эту функцию в листе. Если вы достигли предела формула будет застревать в «загрузка ...». Я получаю эту проблему, используя ее не более чем в 20 раз. Мне нужно получить данные из> 200 адресов. Поэтому я хочу, чтобы создать сценарий листа Google, который запускает ImportXml в нескольких ячейках и копирует результат и паст в качестве значений. Затем цикл это с новым входом URL. Похоже, простой скрипт ... вар сс = SpreadsheetApp.getActiveSpreadsheet (); для (вар х = 0, х <2; х ++) {// Копировать URL из списка в X-колонки:. ss.getSheetByName ( 'Лист1') getRange ( "X" + (2 + х)). CopyTo (ss.getSheetByName ( 'Лист1') getRange ( "А2").); // вставить результат от ImportXML формул в качестве значений по ряду 250+: сс. getSheetByName ( 'Лист1') getRange. ( "В2: С2"). CopyTo (. ss.getSheetByName ( 'Лист1') getRange ( "В" + (250 + х) + ": С" + (250 + х)), {contentsOnly: истинно}); } В результате из сценария является то, что только значения из последнего запуска цикла повторяются на каждой строке. Я попробовал задержки в сценарии (Utilities.sleep (1000)), чтобы позволить клеткам обновить, но это не помогает. Любые другие идеи о том, как я могу решить эту проблему? но это не помогает. Любые другие идеи о том, как я могу решить эту проблему? но это не помогает. Любые другие идеи о том, как я могу решить эту проблему?
Gustav
1

голосов
0

ответ
131

Просмотры

Скрыть листы с Google PHP Spreadsheets клиента

I am using the following code to hide some sheets of a spreadsheet. I use php client library. My target is to export only the desired sheets into a PDF file. Since there is not method to achieve that, I am trying to hide the undesired sheets and then export the spreadhseet with the sheet I need to send by email. But all there requests are failing. Anyone knows the reason? Thank you! function hideSheets($spreadsheetId, $sheetIds) { // Get the sheet service. global $sheet_service; $requestBody = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(); $requests = array(); foreach ($sheetIds as $key => $sheetId) { $request= new Google_Service_Sheets_UpdateSheetPropertiesRequest(); $request_prop = new Google_Service_Sheets_SheetProperties(); $request_prop->setSheetId($sheetId); $request_prop->setHidden(true); $request->setProperties($request_prop); $request->setFields("hidden"); $requests[] = $request; } // print_r($requests[0]); $requestBody->setRequests($requests); $requestBody->setIncludeSpreadsheetInResponse(false); try { $response = $sheet_service->spreadsheets->batchUpdate($spreadsheetId, $requestBody); } catch (Exception $e) { print "An error occurred: " . $e->getMessage(); die(); } echo ''; print_r($response); return; } This code is throwing the following error: An error occurred: { "error": { "code": 400, "message": "Invalid JSON payload received. Unknown name \"fields\" at 'requests[0]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[0]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[1]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[1]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[2]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[2]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[3]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[3]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[4]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[4]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[5]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[5]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[6]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[6]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[7]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[7]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[8]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[8]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[9]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[9]': Cannot find field.", "errors": [ { "message": "Invalid JSON payload received. Unknown name \"fields\" at 'requests[0]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[0]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[1]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[1]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[2]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[2]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[3]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[3]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[4]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[4]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[5]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[5]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[6]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[6]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[7]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[7]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[8]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[8]': Cannot find field Invalid JSON payload received. Unknown name \"fields\" at 'requests[9]': Cannot find field Invalid JSON payload received. Unknown name \"properties\" at 'requests[9]': Cannot find field.", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT" } } The following request body is working fine: { "requests": [ { "updateSheetProperties": { "properties": { "sheetId": 848799001, "hidden": true }, "fields": "hidden"}}]} on google's TRY THIS API app: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate But I dont achieve to translate it to google php client...:(
ÁngelBlanco
1

голосов
0

ответ
154

Просмотры

Обходной путь для отрицательного просмотра назад в Google Таблицах

Я делаю самостоятельно Планировщик добровольцев с помощью Google Таблиц. На одной вкладке, пользователь вводит местоположение и время их сдвига, отформатированную следующим образом: Нью-Йорк: 3/18/18, 11-2pm; LA: 3/19/18, 7-8pm; HOME: 3/19/18, 8-10pm; САНФ: 3/20/18, 9-11AM; а на другой вкладке, я сделал таблицу, которая считывает эту информацию и отображает имя добровольца и информацию под соответствующие ячейки для этого планирования сдвига и местоположения. = ЕСЛИОШИБКА (TRIM (ПОДСТАВИТЬ (конкатенации (ARRAYFORMULA (QUERY ({Сдвиги $ A $ 2:! $ А, Сдвиги $ B $ 2: $ В, тт ​​$ C $ 2: $ С, тт $ D $ 2: $ D, ! Вольс $ G $ 2: $ G}, "выберите Col1, col2, COL4, Col5 где Col3 соответствует '* (Нью-Йорк: " & C $ 2 &", "& C $ 3 &") *.'", 0) & "| "))," |», символ (10)))) Там есть строка для каждого основного места. В приведенном выше запросе, С $ 2 и С $ 3 являются дата и время. Тем не менее, я хотел бы сделать ряд «MISC» для отображения волонтерских смен в местах, которые не достаточно распространены, чтобы иметь свои собственные строки. Эта строка исключает все большие места. Я написал регулярное выражение, которое почти выражает то, что я хочу, но, к сожалению, кажется, что Google Таблица не кажется, поддерживает lookarounds еще. Есть достаточно лаконичный способ воссоздать это без просмотра назад? Я также рад найти более элегантное решение проблемы! /.* (? Есть достаточно лаконичный способ воссоздать это без просмотра назад? Я также рад найти более элегантное решение проблемы! /.* (? Есть достаточно лаконичный способ воссоздать это без просмотра назад? Я также рад найти более элегантное решение проблемы! /.* (?
Amina
1

голосов
0

ответ
21

Просмотры

Обработка нескольких и дубликатов писем для Google MailApp

Я пытаюсь создать сценарий для Google Таблиц, который выполняет следующие действия: 1) запускает на определенный 2 день) компилирует информацию из столбцов на основе даты критериях 3) посылает электронный дайджест из нескольких значений столбцов для каждой уникальной сработавшей строки электронной почты I» ве посмотрел несколько альтернативных примеров, но я не могу понять синтаксис для обработки шаг 3. данные, полученные от Google Forms представлений. Материалы постоянно добавляются. Сценарий имеет триггер времени с приводом. Я хочу, чтобы собрать все данные для записи по тому же ответчиком по электронной почте на сработавшую дате и выделить данные, предназначенные для различных адресов электронной почты. Я схватил сценарий и переделал его в меру своих способностей. (Смотри ниже) В настоящее время он дает следующие результаты: 1) сценарий триггеров правильно по дате 2) собирает информацию из сработавших столбцов и отчетов в одном письме ко всем адресам из сработавших строк. (Неправильное поведение) В настоящее время сценария бегает «цикл», чтобы захватить все срабатывающие данные для тела электронной почты и отправляет все данные на все письма. Я понимаю, почему он делает это, но я не могу обернуть мою голову вокруг, как выполнить «шаг 3» выше «. Я думаю, что нужно создать объект для почтовых данных и запустить еще один «цикл», чтобы изолировать эталонную электронную почту. Я не уверен, куда идти отсюда, или как получить значение столбца, чтобы выделить необходимую электронную почту. Электронные таблицы макета: Колонка A: Отметка Колонка B: Записанный E-mail Колонка C - F: Персонализированная информация Колонка G: Запрошенный Followup Дата Колонка H: Дни, оставшиеся до набора Followup данные Дата начинается на строке 2 Email срабатывает, когда колонка H передает значение 0. Спасибо заранее за любую помощь и все Current Script: функция checkReminder () {// получить объект электронной таблицы уаг таблицу = SpreadsheetApp. getActiveSpreadsheet (); // установить первый лист как активный SpreadsheetApp.setActiveSheet (spreadsheet.getSheets () [0]); // извлечение этого листа уаг листа = spreadsheet.getActiveSheet (); // выяснить, что последняя строка вар lastRow = sheet.getLastRow (); // строки индексируются начиная с 1, и первой строкой // это заголовки, так что начать с строкой 2 вара StartRow = 2 // захватить колонку 8 (в «» остался дней столбца) диапазона вара = sheet.getRange (2 , 8, lastRow-StartRow + 1,1); вар NumRows = range.getNumRows (); вар reminder_date = range.getDisplayValues ​​(); // захватить DOB столбец вар = DOB sheet.getRange (2,4, lastRow-StartRow + 1,1) = вар DOBrange DOB.getDisplayValues ​​(); // захватить тел # столбец вар Phnum = sheet.getRange (2,5, lastRow-StartRow + 1,1) = вар phnumrange phnum.getDisplayValues ​​(); // Администратор Дата 1 дробового вар Admindate = sheet.getRange (2,6, lastRow-StartRow + 1,1) = вар Администратор Admindate.getDisplayValues ​​(); // Теперь, возьмите диапазон пациента столбца имя = sheet.getRange (2,3, lastRow-StartRow + 1,1); вар patient_info_values ​​= range.getValues ​​(); // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я lastRow-StartRow + 1,1) = вар DOBrange DOB.getDisplayValues ​​(); // захватить тел # столбец вар Phnum = sheet.getRange (2,5, lastRow-StartRow + 1,1) = вар phnumrange phnum.getDisplayValues ​​(); // Администратор Дата 1 дробового вар Admindate = sheet.getRange (2,6, lastRow-StartRow + 1,1) = вар Администратор Admindate.getDisplayValues ​​(); // Теперь, возьмите диапазон пациента столбца имя = sheet.getRange (2,3, lastRow-StartRow + 1,1); вар patient_info_values ​​= range.getValues ​​(); // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я lastRow-StartRow + 1,1) = вар DOBrange DOB.getDisplayValues ​​(); // захватить тел # столбец вар Phnum = sheet.getRange (2,5, lastRow-StartRow + 1,1) = вар phnumrange phnum.getDisplayValues ​​(); // Администратор Дата 1 дробового вар Admindate = sheet.getRange (2,6, lastRow-StartRow + 1,1) = вар Администратор Admindate.getDisplayValues ​​(); // Теперь, возьмите диапазон пациента столбца имя = sheet.getRange (2,3, lastRow-StartRow + 1,1); вар patient_info_values ​​= range.getValues ​​(); // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я // захватить тел # столбец вар Phnum = sheet.getRange (2,5, lastRow-StartRow + 1,1) = вар phnumrange phnum.getDisplayValues ​​(); // Администратор Дата 1 дробового вар Admindate = sheet.getRange (2,6, lastRow-StartRow + 1,1) = вар Администратор Admindate.getDisplayValues ​​(); // Теперь, возьмите диапазон пациента столбца имя = sheet.getRange (2,3, lastRow-StartRow + 1,1); вар patient_info_values ​​= range.getValues ​​(); // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я // захватить тел # столбец вар Phnum = sheet.getRange (2,5, lastRow-StartRow + 1,1) = вар phnumrange phnum.getDisplayValues ​​(); // Администратор Дата 1 дробового вар Admindate = sheet.getRange (2,6, lastRow-StartRow + 1,1) = вар Администратор Admindate.getDisplayValues ​​(); // Теперь, возьмите диапазон пациента столбца имя = sheet.getRange (2,3, lastRow-StartRow + 1,1); вар patient_info_values ​​= range.getValues ​​(); // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я // Администратор Дата 1 дробового вар Admindate = sheet.getRange (2,6, lastRow-StartRow + 1,1) = вар Администратор Admindate.getDisplayValues ​​(); // Теперь, возьмите диапазон пациента столбца имя = sheet.getRange (2,3, lastRow-StartRow + 1,1); вар patient_info_values ​​= range.getValues ​​(); // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я // Администратор Дата 1 дробового вар Admindate = sheet.getRange (2,6, lastRow-StartRow + 1,1) = вар Администратор Admindate.getDisplayValues ​​(); // Теперь, возьмите диапазон пациента столбца имя = sheet.getRange (2,3, lastRow-StartRow + 1,1); вар patient_info_values ​​= range.getValues ​​(); // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я // захватить электронный вар Emailrows = sheet.getRange (2,2, lastRow-StartRow + 1,1); вар = Emailrows.getValues ​​адресов электронной (); вар sendit = 0; вар MSG = ""; вар приветствие = «Это письмо, чтобы напомнить вашу команду Followup со следующими лицами \ п \ п.»; // Цикл по дням левого значения (Var = 0; я
M. S.
1

голосов
0

ответ
299

Просмотры

Google Лист: Сценарий - Copy / Paste, задержка времени, Copy / Paste, повторить для всех значений в столбце

Я пытаюсь построить таблицу, которая автоматически вычисляет самоценность списка акций. Ячейка 3 и 4 ячеек связаны с другим листом, который имеет ряд формул, включая данные, полученные из внешних веб-сайтов. Я хотел бы написать сценарий для пользовательской функции, которая будет использовать эту установку: вводится в ячейку 2, с ячейкой 1 в качестве аргумента копирует значение тикерного (ячейки 1) в камеру 3, активируя другие функции листа, чтобы сделать их расчеты После некоторое время (например, 30 секунд), считывает значение в ячейке 4 из этих других функций возвращает окончательное значение в ячейку 2. Я бы затем использовать эту функцию для всех значений в столбце A. до сих пор Ive были в состоянии выяснить, как скопировать и вставить одно значение. Любое руководство будет оценено, спасибо заранее. Функция Val (код) {вар лист = SpreadsheetApp.getActiveSpreadsheet (); // доступ к таблице SpreadsheetApp.setActiveSheet (sheet.getSheetByName ( 'Список компаний')); // доступ к листу по диапазону имени вар = sheet.getRange ( «А2»); // назначить диапазон, который вы хотите скопировать вар копирования = range.getValues ​​(); sheet.getRange ( 'D2'). SetValue (копия) // новый диапазон вы хотите, чтобы вставить значение}
Anthony Shi
1

голосов
0

ответ
22

Просмотры

Календарь Spreadsheet

Таким образом, у меня есть эта таблица полностью с именами и комментариями. Я хочу, чтобы вся информация должна быть изменена, когда я изменить дату в календаре. На сегодняшний день у меня есть 5 людей и 5 комментариев, но когда я изменить дату на завтра остаются эти комментарии и люди, я хочу, чтобы они были стерты (поэтому новые люди и новые комментарии будут добавлены), и те, с сегодняшнего дня остаются сохраненными, так что я может вернуться. Это возможно? Кто-нибудь понимает, или я просто глупо на объяснении? Я могу сделать печать экрана, если это помогает. Пожалуйста помоги!
Marcu Lavinia
1

голосов
0

ответ
273

Просмотры

Google Script e.range is object Object instead of object Range

У меня есть этот простой код, который я использую для тестирования. У меня есть «по форме представить» устанавливаемый триггер на моей таблице, которая работает каждый раз, когда форма передается. Мне нужно знать диапазон, в котором был скопирован ответ и ответов. Таким образом, я использую эту функцию код MYFUNCTION (событие) {вар Response = event.values ​​вар Rango = event.range вар Row = Rango.getRow ()} В event.values ​​работает нормально, но event.range не делает. Insted получения объекта Range это возвращение объекта Object. Это то, что ошибка говорит TypeError: Не удается найти функцию GetRow в объект [объект Object]. (Строка 4, файл «Код») Это довольно странно, потому что код работает правильно, прежде чем. Чтобы быть более конкретным: Я проверяю это, заполнив форму. Я знаю, что событие. значения работает отлично, потому что я добавил строку кода, чтобы отправить мне письмо с event.values ​​и event.range содержания. На самом деле, я мог получить доступ к содержимому этого объекта Object с использованием диапазона [ «rowEnd»]. Но прежде, чем я мог бы просто использовать Range.getRow (), так как эта переменная Range действительно объект Range. Это ссылка таблицы: https://docs.google.com/spreadsheets/d/1G6fXTkcbibxUZ29cxVTwkNzL5nircsIz2F573IXIUf4/edit?usp=sharing это соединение формы: https: //docs.google.com/forms/d/e/1FAIpQLScvHD13JVpMHh3eikRseBbOu6OYlkacK_mkMotVJi9bI_MK0g ? / viewform УСП = sf_link Update: После нескольких недель попыток много вещей, я просто понял, что это разрешение ошибка (я думаю) я сброшена все разрешения на панели безопасности моего аккаунта Google и снова предоставлены разрешения и DONE. я мог получить доступ к содержимому этого объекта Object с использованием диапазона [ «rowEnd»]. Но прежде, чем я мог бы просто использовать Range.getRow (), так как эта переменная Range действительно объект Range. Это ссылка таблицы: https://docs.google.com/spreadsheets/d/1G6fXTkcbibxUZ29cxVTwkNzL5nircsIz2F573IXIUf4/edit?usp=sharing это соединение формы: https: //docs.google.com/forms/d/e/1FAIpQLScvHD13JVpMHh3eikRseBbOu6OYlkacK_mkMotVJi9bI_MK0g ? / viewform УСП = sf_link Update: После нескольких недель попыток много вещей, я просто понял, что это разрешение ошибка (я думаю) я сброшена все разрешения на панели безопасности моего аккаунта Google и снова предоставлены разрешения и DONE. я мог получить доступ к содержимому этого объекта Object с использованием диапазона [ «rowEnd»]. Но прежде, чем я мог бы просто использовать Range.getRow (), так как эта переменная Range действительно объект Range. Это ссылка таблицы: https://docs.google.com/spreadsheets/d/1G6fXTkcbibxUZ29cxVTwkNzL5nircsIz2F573IXIUf4/edit?usp=sharing это соединение формы: https: //docs.google.com/forms/d/e/1FAIpQLScvHD13JVpMHh3eikRseBbOu6OYlkacK_mkMotVJi9bI_MK0g ? / viewform УСП = sf_link Update: После нескольких недель попыток много вещей, я просто понял, что это разрешение ошибка (я думаю) я сброшена все разрешения на панели безопасности моего аккаунта Google и снова предоставлены разрешения и DONE.
Ricardo Otero
1

голосов
0

ответ
36

Просмотры

Как программно установить доступ лист Google, созданный с помощью рабочего листа апи?

У меня возникли проблемы с помощью электронной таблицы Google API. В принципе у меня есть настройки учетной записи службы, которые могут извлекать файлы и т.д. из моего Google Диск. Это прекрасно работает. Я могу получить лист и прочитать данные. Затем я создаю новый лист, и это создает отлично. Я проверил URL ответа и нашел новые рабочие листы URL. Однако, когда я пытаюсь получить доступ к новым таблицам через браузер я получаю не санкционирована ошибку. Кто-нибудь там знают, как я бы установить разрешения на новом листе на создание? Я ничего не вижу в документации для паров или что-то вроде этого, что бы установить их. https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#create
Seamus O Connor
10

голосов
1

ответ
8.9k

Просмотры

Отправить Старый Google Форма перенаправления на другую страницу

Я с использованием формы Google на веб-странице. Я скопировал исходный код из формы непосредственно на моей странице, так что я могу изменить некоторые HTML вместо использования IFRAME. Тогда вместо того, чтобы пользователь страницы документов ответа Google Я хотел бы, чтобы перенаправить их на другую страницу. Беда в том, что я бегу в с страницы редиректа. Я был в состоянии получить эту работу должным образом в Chrome и Firefox с этим: IE и Safari и автоматически сделали редирект и ответ не был записан в форме Google. Если я бросаю редирект, действие прекрасно работает как и ответ записывается в таблицу Google. Таким образом, я попытался вытащить из действия и вместо этого сделали все, что в onsubmit вместо этого, например, так: Та же проблема, как и раньше, IE и Safari и перенаправлять, и ничего не записывается в таблицу Google. И еще раз, если я удалю перенаправлять ответ получает записывается во всех браузерах. Я могу также делать другие вещи, как бросить в боевой готовности после действия, и все продолжает работать нормально. Единственный раз, когда я вижу, вопрос с редиректа. Таким образом, на данный момент единственное, что я могу понять, что их это своего рода конфликт между перенаправлением и действием. У меня есть довольно ограниченное знание Javascript и форм, так что любая помощь или рекомендации будут весьма признателен!
strangiato
1

голосов
0

ответ
629

Просмотры

Google листов апи от AWS Lambda

05 секунд Похоже, Google SDK хочет открыть браузер для пользователя для проверки подлинности, но нет браузера в AWS Lambda. Есть еще один способ проверки подлинности, не открывая браузер? Если я использую https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt-auth будет работать? Кто-нибудь имеет какие-либо полезные ссылки / образец, который я могу использовать? Я не программист, опыт действительно ценю вашу помощь, спасибо заранее.
Lobo
1

голосов
0

ответ
27

Просмотры

Google Скрипт для удаления имени из деятельности перечня не работает

Я пытаюсь написать сценарий для моего женского общества списка, но я не могу заставить его работать. Я хочу, чтобы иметь возможность ввести статус девушки и есть сценарий удалить свое имя из списка Actives на то, что обозначение она требует, если она не является выпускающей или передачи, то мне просто нужно это скопировать ее имя на этой странице, из простынь. Вот что у меня есть: функция onEdit () {// принимает исходные данные в листе с именем Активов (не в ожидании завершения / отставка) // целевого лист шага к имени другим (не активны), Отставку В ожидании или прекращение ожидания // тест колонки со статусом находится столбец 4 или D. вар лист = SpreadsheetApp.getActiveSpreadsheet (); вар с = SpreadsheetApp.getActive (); вар г = SpreadsheetApp.getActiveRange (), если (s.getName () == "Actives (не в ожидании завершения / отставки)" && r.getColumn () == d & & R.getValue () == "ушел") {вар строка = r.getRow (); вар numColumns = s.getLastColumn (); вар targetSheet = sheet.getSheetByName () == "Отставка Ожидание"; целевая переменная = targetSheet.getRange (targetSheet.getLastRow () + 1, 1); s.getRange (строка, 1, 1, numColumns) .moveTo (мишень); s.deleteRow (строка); } Если (s.getName () == "(не Actives в ожидании завершения / отставки)" && r.getColumn () == 4 && r.getValue () == "передано") {вар строка = r.getRow () ; вар numColumns = s.getColumn (я); вар targetSheet = sheet.getSheetByName () == "Другой (неактивный)"; целевая переменная = targetSheet.getRange (targetSheet.getLastRow () + 1, 1); s.getRange (строка, 1, 1, numColumns) .moveTo (мишень); s.deleteRow (строка); } Если (s.getName () == " MoveTo (цель); s.deleteRow (строка); } Если (s.getName () == "(не Actives в ожидании завершения / отставки)" && r.getColumn () == 4 && r.getValue () == "Термин") {вар строка = r.getRow () ; вар numColumns = s.getLastColumn (); вар targetSheet = sheet.getSheetByName () == "Прекращение очереди"; целевая переменная = targetSheet.getRange (targetSheet.getLastRow () + 1, 1); s.getRange (строка, 1, 1, numColumns) .moveTo (мишень); s.deleteRow (строка); } Если (s.getName () == "(не Actives в ожидании завершения / отставки)" && r.getColumn () == 4 && r.getValue () == "grad4") {вар строка = r.getRow () ; вар numColumns = s.getLastColumn (); вар targetSheet = sheet.getSheetByName () == "Gradutating пожилых"; целевая переменная = targetSheet.getRange (targetSheet. getLastRow () + 1, 1); s.getRange (строка, 1, 1, numColumns) .copyTo (мишень); } Если (s.getName () == "(не Actives в ожидании завершения / отставки)" && r.getColumn () == 4 && r.getValue () == "grad5") {вар строка = r.getRow () ; вар numColumns = s.getLastColumn (); вар targetSheet = sheet.getSheetByName () == "Пятый год пожилых людей"; целевая переменная = targetSheet.getRange (targetSheet.getLastRow () + 1, 1); s.getRange (строка, 1, 1, numColumns) .copyTo (мишень); }} getSheetByName () == "Пятый год пожилых"; целевая переменная = targetSheet.getRange (targetSheet.getLastRow () + 1, 1); s.getRange (строка, 1, 1, numColumns) .copyTo (мишень); }} getSheetByName () == "Пятый год пожилых"; целевая переменная = targetSheet.getRange (targetSheet.getLastRow () + 1, 1); s.getRange (строка, 1, 1, numColumns) .copyTo (мишень); }}
Elizabeth Furtado
1

голосов
0

ответ
39

Просмотры

Манипулирование данных из Google Таблиц с WordPress

Я погуглить и искать вокруг всей сети, пытаясь найти информацию о том, как использовать таблицы Google в качестве источника данных в WordPress и управления этими данными в уже существующей SHORTCODE. Меня попросили, чтобы попытаться выяснить, как хранить информацию о ценах внутри листа Google и подключить эти данные в существующие SHORTCODE для сайта, который использует Cron для обновления данных через определенные промежутки времени. Цель состоит в том, чтобы иметь доступ для клиентов в Листе Google и обновлять свои цены, когда они хотят, а затем обновление сайта с этими изменениями цен и сохранить внешний вид своего сайта, не используя основные Google Sheets шаблоны. Я нашел несколько различных решений, которые близки, но ни один из них не вдаваться в манипулировании данными, как я хочу. Все они в основном только по умолчанию шаблоны, что таблица Google выглядит. Я по существу хочу запросить данные из листа и вставить его в SHORTCODE. Я никого не ищу, чтобы написать код для меня, но я просто ищу для толкания в правильном направлении, как идти об этом.
The_fatness
1

голосов
0

ответ
2k

Просмотры

Как создать кластерный уложены гистограмму в Google Таблицах?

Это тип карты я хочу создать, месяцев на оси х. Найдено инструкции о том, как это сделать в Excel (см «DoubleColumn»: https://ufile.io/nu18b), но не может повторить это в листах. Кто-то понял, как это сделать в «Визуализация API.» Надеюсь, то будет помогает.
Vinay Patel
1

голосов
1

ответ
170

Просмотры

Спарклайн с динамическим диапазоном на основе даты в Таблицах Google

Я по возрастанию даты в колонке А и проценты в столбце B. Вот выдержка (последние 5 строк): AB 728 4/30/2018 9:24:09 36.80% 732 4/30/2018 10:05:44 36.93% 730 4/30/2018 10:52:41 36,99% 731 4/30/2018 11:23:50 36,95% 732 4/30/2018 12:42:06 36,75% Я хочу построить Спарклайны в ячейке С1 на основе только в процентах в столбце B, которые с прошлой недели. Edit: Обратите внимание, что на прошлой неделе должна заканчиваться на последней (самой последней) даты, указанной в столбце A. Конечный результат должен возвращать диапазон между конкретной соте B и до последней непустой ячейки B, которые будут использоваться в спарклайн формула. Как получить этот диапазон? Примечание: Я полагаю, это должно быть что-то вдоль линий = спарклайн (х &: В), где х представляет ячейку B, который соответствует (той же строке) в клетку, которая имеет дату, что» са неделю ealier чем дата в прошлом населена клетке. Но я не уверен, как получить эту дату, и как написать формулу спарклайн. Спасибо!
David Spivak
1

голосов
1

ответ
120

Просмотры

Вставка новых данных в верх таблицы Google с помощью Google Sheets API v4

Я использую Google Таблицы, чтобы следить за последние заказы на моем сайте. Я хотел бы добавить детали каждого нового заказа в электронную таблицу Google и иметь самые последние детали заказа появляются на верхней части листа и старых записей на дне. Я знаю, я мог бы добавить новую строку после последней строки, не зная / предоставления Google с номером строки, используя следующий код:. // Вставки НОВЫЕ ДАННЫЕ ПОСЛЕ ПОСЛЕДНЕГО ROW ValueRange тела = новые ValueRange () setValues ​​(WriteData); AppendValuesResponse appendValuesResponse = service.spreadsheets () значения () добавление (spreadsheetId, диапазон, тело) .setValueInputOption (valueInputOption) .Execute ()..; Тем не менее, это будет означать, что новые записи добавляются в нижней части листа, а не сверху. Мои требования как раз наоборот. Мне нужно добавить / добавить новые записи в верхней части листа и имеют старые записи перемещаться на дно. Есть ли способ сделать это изначально с помощью API?
S.O.S
1

голосов
1

ответ
47

Просмотры

Google сценарий - Показать конкретный лист для пользователей

У меня есть Google Script, который позволяет пользователю перемещаться по электронной таблице, благодаря изображениям со скриптом отведенных им. Однако, так как через несколько дней, функция не работает должным образом. Указанная функция: функция switchToDowntime () {spreadsheet.setActiveSheet ( «БАЛАНС ЗДЕСЬ»)}, где электронная таблица SpreadsheetApp.getActiveSpreadsheet () Эта функция используется для работы, я считаю. Теперь, он просто работает и ничего не делает. Не изменяет текущий диапазон, или отображать правый лист. Если кто-то может помочь, это было бы здорово.
Mlemort
1

голосов
0

ответ
159

Просмотры

Google Sheet API V4 Дата формат ячейки PHP JSON

Я создаю лист Google и нужно установить ячейку с форматом даты. Я использую ссылку здесь Мой код выглядит следующим образом: $ format_requests = массив (); $ Format_requests [] = массив ( 'addConditionalFormatRule' => массив ( 'правило' => Array ( 'диапазоны' => массив (массив ( "sheetId" => 0, "startRowIndex" => 0, "startColumnIndex" => 1 "endColumnIndex" => 1)), "booleanRule" => Array (// "состояние" => Array (//) "формат" => Array ( "NumberFormat" => Array ( "тип" => «ДАТА ""
Mona
1

голосов
0

ответ
468

Просмотры

Insert Formula into Entire Column via Google Sheets API

Я попытка вставить формулу = ДВССЫЛИ (\ "С \" & СТРОКА ()) - ДВССЫЛИ (\ "J \" & СТРОКА ()) (который вычитает из J G) в колонке K с помощью Google API Листы v4. Однако, вместо того, чтобы вставить формулу в одну ячейку, я хочу, чтобы вставить его во все текущие / будущие строки в данной колонке. Для этого я использую следующий код: общественного недействительными updateSingleColumnAndParseInput (String spreadsheetId, диапазон строк, список ROWDATA) бросает IOException, GeneralSecurityException {окончательный NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport (); Простыни обслуживание = новый Sheets.Builder (HTTP_TRANSPORT, JSON_FACTORY, getCredentials (HTTP_TRANSPORT)) setApplicationName (APPLICATION_NAME) .build (). ValueRange valueRange = новый ValueRange (); valueRange.setRange (диапазон); valueRange.setValues ​​(ROWDATA); valueRange.setMajorDimension ( "строки"); // "ОПОРЫ" // "РЯДЫ" (оба значения дают одинаковый результат) Список oList = новый ArrayList (); oList.add (valueRange); .. Обновление Обновления = service.spreadsheets () значение () обновление (spreadsheetId, диапазон, valueRange); update.setValueInputOption ( "USER_ENTERED"); // USER_ENTERED (значения будут обрабатываться) HttpResponse значения = update.buildHttpRequest () выполнить (). } Я звоню этот метод, используя этот код: updateSingleColumnAndParseInput ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "K2: K", DataList); Исходя из этого, и этот ответ я ожидал формулу, чтобы быть вставлены во все текущие и будущие ряды столбца K, но после выполнения этого кода только второй строки (К2) в настоящее время обновляется. // "РЯДЫ" (оба значения дают одинаковый результат) Список oList = новый ArrayList (); oList.add (valueRange); .. Обновление Обновления = service.spreadsheets () значение () обновление (spreadsheetId, диапазон, valueRange); update.setValueInputOption ( "USER_ENTERED"); // USER_ENTERED (значения будут обрабатываться) HttpResponse значения = update.buildHttpRequest () выполнить (). } Я звоню этот метод, используя этот код: updateSingleColumnAndParseInput ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "K2: K", DataList); Исходя из этого, и этот ответ я ожидал формулу, чтобы быть вставлены во все текущие и будущие ряды столбца K, но после выполнения этого кода только второй строки (К2) в настоящее время обновляется. // "РЯДЫ" (оба значения дают одинаковый результат) Список oList = новый ArrayList (); oList.add (valueRange); .. Обновление Обновления = service.spreadsheets () значение () обновление (spreadsheetId, диапазон, valueRange); update.setValueInputOption ( "USER_ENTERED"); // USER_ENTERED (значения будут обрабатываться) HttpResponse значения = update.buildHttpRequest () выполнить (). } Я звоню этот метод, используя этот код: updateSingleColumnAndParseInput ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "K2: K", DataList); Исходя из этого, и этот ответ я ожидал формулу, чтобы быть вставлены во все текущие и будущие ряды столбца K, но после выполнения этого кода только второй строки (К2) в настоящее время обновляется. электронные таблицы () значения () обновление (spreadsheetId, диапазон, valueRange)..; update.setValueInputOption ( "USER_ENTERED"); // USER_ENTERED (значения будут обрабатываться) HttpResponse значения = update.buildHttpRequest () выполнить (). } Я звоню этот метод, используя этот код: updateSingleColumnAndParseInput ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "K2: K", DataList); Исходя из этого, и этот ответ я ожидал формулу, чтобы быть вставлены во все текущие и будущие ряды столбца K, но после выполнения этого кода только второй строки (К2) в настоящее время обновляется. электронные таблицы () значения () обновление (spreadsheetId, диапазон, valueRange)..; update.setValueInputOption ( "USER_ENTERED"); // USER_ENTERED (значения будут обрабатываться) HttpResponse значения = update.buildHttpRequest () выполнить (). } Я звоню этот метод, используя этот код: updateSingleColumnAndParseInput ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "K2: K", DataList); Исходя из этого, и этот ответ я ожидал формулу, чтобы быть вставлены во все текущие и будущие ряды столбца K, но после выполнения этого кода только второй строки (К2) в настоящее время обновляется. updateSingleColumnAndParseInput ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "К2: К", DataList); Исходя из этого, и этот ответ я ожидал формулу, чтобы быть вставлены во все текущие и будущие ряды столбца K, но после выполнения этого кода только второй строки (К2) в настоящее время обновляется. updateSingleColumnAndParseInput ( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "К2: К", DataList); Исходя из этого, и этот ответ я ожидал формулу, чтобы быть вставлены во все текущие и будущие ряды столбца K, но после выполнения этого кода только второй строки (К2) в настоящее время обновляется.
S.O.S
1

голосов
0

ответ
359

Просмотры

Создать PDF из AppMaker страницы без использования GoogleDocs

Приложение, я работаю над возвратами некоторых результаты поиска в таблицах, и я хотел бы создать PDF из этих результатов Сохраняя таблицы заголовка, заголовок и все, и без использования Google Docs. Является ли это возможным? Если да, то как я могу это сделать?
1

голосов
2

ответ
572

Просмотры

#REF ошибка при копировании листа в другую таблицу (Google)

Я сейчас работаю над сценарием, который получает лист из другого Spreadsheet и дублирует его к активному Spreadsheet. Вот как это работает: у меня есть лист, где пользователь определяет имя исходного листа, ссылка на оригинальную электронную таблицу и название дублированного лист должен получить. Лист может быть продублирована двумя способами: а. Только значение (с GetValues ​​(); setValues ​​()) б. Клон его с CopyTo Проблемы с вторым способом: Если исходный лист имеет формулу, ссылающуюся другой лист, я (ожидаемо) получить #REF ошибку, потому что ссылки лист не существует в текущей электронной таблице. В идеале, местная / внутренняя ссылка должна быть преобразована в качестве внешней ссылки. Я предполагаю, что регулярное выражение может использоваться, чтобы найти эти формулы и вставить IMPORTRANGE внутри них? Я честно не знаю, как относиться к этому. Есть идеи?
Anna Shtyrya
1

голосов
0

ответ
79

Просмотры

Ошибка XML в Apps Script

Код ниже, в Листе Google, из Scripts книги Google возвращается в «Незаконно сформированный XML-синтаксис. (Строка 7, файл„Код“)» ошибки. Что случилось? Я новичок в Apps Script. Функция helloWorldUiApp () {вар сс = SpreadsheetApp.getActiveSpreadsheet (); вар приложение = UiApp.createApplication () SetTitle (). app.add (app.createLabel ( 'Hello World')); // TODO добавить код здесь ss.show (приложение); }
user1955215

Просмотр дополнительных вопросов