Как удалить строку в Гугл таблице с телефона Андроид

Я работаю над простой системой управления электронной почтой, используя Google Таблицы, формы и скрипты приложений, но я новичок в скрипте Javascript/Google Apps, и я уже давно застал эту проблему.

Итак, у меня есть электронная таблица с контактами, перечисляющая их имя, адрес электронной почты и группу, которая выглядит так:

| Name | Email | Group | |——-|——————-|———| | John | [email protected] | A | | Bill | [email protected] | A | | Janet | [email protected] | B | | Mary | [email protected] | B | | Mary | [email protected] | Delete | | Bill | [email protected] | Delete | | Janet | [email protected] | A |

Я пытаюсь написать сценарий, который программно находит все электронные письма, отмеченные “Удалить”, и удаляет все строки, содержащие эти письма. В этом случае мне нужно будет удалить все строки, содержащие [email protected] и [email protected], и сохранить Джона и Джанет. Ожидаемый результат:

| Name | Email | Group | |——-|——————-|———| | John | [email protected] | A | | Janet | [email protected] | B | | Janet | [email protected] | A |

Проблема в том, что я не могу найти способ фильтровать мой лист таким образом, и мой скрипт копирует все, включая строки, которые я хотел бы удалить. Это код, который я написал до сих пор:

Таблица гугл, закрепляем столбцы и строки на андроид.

Что если Гугл рухнет


function removeDelRows() < var ss = SpreadsheetApp.getActiveSheet(); // Gets active sheet var data = ss.getDataRange().getValues(); // Get values in active sheet var toDelete = new Array(); var newData = new Array(); // Put in toDelete array all emails marked as «Delete» for (var i = 0; i < data.length; i++) < if (data[i][2] == «Delete») < toDelete.push(data[i][1]); >> // !BUGGY! // Find all rows that contains emails to be deleted and remove them for (var j = 0; j < data.length; j++) < for (var k = 0; k < toDelete.length; k++) < if(data[j][1] == toDelete[k])<>// Do nothing else < newData.push(data[j]); // THIS CONDITION IS NOT BEHAVING AS EXPECTED; NEWDATA IS A COPY OF DATA >> > Logger.log(newData); // newData should contains only rows that do not match toDelete ones // Delete everything else sheet.clearContents(); sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData); >

Я уверен, что решение довольно тривиально, но я несколько часов и часов стучаю головой, и я не могу понять это!

Как насчет использования deleteRow()?

var ss = SpreadsheetApp.getActiveSheet(); // Gets active sheet var data = ss.getDataRange().getValues(); // Get values in active sheet nextLine: for( var i = data.length-1; i >=0; i— )

Источник: techarks.ru

Как в гугл таблице удалить столбец?

Как удалить пустые строки и столбцы в гугл таблице?

Нажмите на Delete Blank Rows/Columns ( Удалить пустые строки / столбцы ). После этого в колонке справа появятся опции дополнения. Нажмите на пустую серую ячейку в левом верхнем углу таблицы , чтобы выделить всю таблицу . Или просто нажмите на клавиатуре Ctrl + A .

Как удалить столбцы в Google Таблицах на телефоне?

Как удалять в гугл таблице?

  1. На компьютере откройте Документы, Таблицы или Презентации.
  2. Рядом с нужным файлом нажмите на значок «Ещё» Удалить .
  3. Файл будет перемещен в корзину. Подробнее о поиске и восстановлении находящихся в корзине файлов…
Как сделать автоматический переход в презентации Гугл

Как удалить одну ячейку в гугл таблице?

Открыть Google Таблицу , в которой нужно произвести редактирование данных, путем удаления столбцов или строк. Выделить нужный блок или одну ячейку в месте, подлежащем деинсталляции. Щелкнуть ПКМ и выбрать опцию « Удалить строку » или « Удалить столбец».

Как удалить содержимое ячейки в гугл таблице?

  1. Чтобы удалить текущее содержимое , выделите ячейку (или несколько ячеек ) и нажмите клавишу DELETE или BACKSPACE. .
  2. Чтобы удалить содержимое всей строки, сначала щелкните номер строки слева, чтобы выделить ее, а затем нажмите на клавиатуре клавишу DELETE или BACKSPACE.

Как удалить ячейку в гугл таблице на айфоне?

  1. Откройте файл в приложении Google Таблицы на iPhone или iPad.
  2. Выберите строку или столбец.
  3. В открывшемся меню нажмите на стрелку вправо Удалить строку или Удалить столбец.

Как удалить лишние столбцы и строки в гугл таблице?

  1. Откройте документ на устройстве Android.
  2. Коснитесь таблицы .
  3. Нажмите на стрелку рядом со строкой или столбцом.
  4. В открывшемся меню коснитесь значка с тремя точками .
  5. Нажмите Удалить столбец или Удалить строку .

Как удалить пустые строки в таблицах Google?

Нажмите на Delete Blank Rows/Columns ( Удалить пустые строки /столбцы). После этого в колонке справа появятся опции дополнения. Нажмите на пустую серую ячейку в левом верхнем углу таблицы , чтобы выделить всю таблицу. Или просто нажмите на клавиатуре Ctrl + A .

Как выделить пустые ячейки в гугл таблице?

Автоматическое выделение пустых ячеек

Перейдите в Google Таблицы , войдите в аккаунт и откройте нужный файл. Выделите ячейки , к которым хотите применить форматирование. Это можно сделать, зажав курсор на первой ячейке и перетащив его на остальные. Затем в меню выберите «Формат» — «Условное форматирование

Как скрыть ненужные ячейки в гугл таблице?

  1. Кликните по названию столбца правой кнопкой мыши
  2. В открывшемся контекстном меню выберите пункт « Скрыть столбец»
Google pixel 7 сколько сим карт

Как удалять Гугл таблицы?

  1. На компьютере откройте Документы, Таблицы или Презентации.
  2. Рядом с нужным файлом нажмите на значок «Ещё» Удалить .
  3. Файл будет перемещен в корзину. Подробнее о поиске и восстановлении находящихся в корзине файлов…

Как в гугл таблице очистить содержимое?

Чтобы удалить текущее содержимое , выделите ячейку (или несколько ячеек) и нажмите клавишу DELETE или BACKSPACE. СОВЕТ. Также можно щелкнуть ячейку (или ячейки) правой кнопкой мыши и выбрать пункт Удалить содержимое .

Как в гугл таблицах удалить столбцы?

  1. Откройте документ на устройстве Android.
  2. Коснитесь таблицы .
  3. Нажмите на стрелку рядом со строкой или столбцом.
  4. В открывшемся меню коснитесь значка с тремя точками .
  5. Нажмите Удалить столбец или Удалить строку.

Источник: mob-review.com

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

Я столкнулся с самой странной ошибкой при попытке удалить строки, соответствующие определенному значению, с помощью скрипта Google Apps.

function myFunction() < var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName(«file.csv»); var values = sheet.getRange(«N2:N»).getValues(); var row_del = new Array(); for(var i=0;i> // Logger.log(row_del); // GmailApp.sendEmail(«my_email_address», «subject», row_del) for (var i = 0; i < row_del.length; i++) < sheet.deleteRow(row_del[i]); >>

Код, который я написал, подбирает номера строк, которые следует удалить, но не все эти строки удаляются с моей первой попытки. Я должен выполнить свой сценарий несколько раз, чтобы эти строки были удалены.

Если в моем коде есть ошибка, она должна появиться, а если логика неверна, неправильные строки должны быть удалены. Я не встречал ни одного из этих сценариев, и мне нужно просто выполнить эту функцию несколько раз.

Что-то мне здесь не хватает?

Bharath Sankar 20 Июн 2016 в 17:16

9 ответов

Лучший ответ

Как узнать версию своего браузера Гугл Хром

Когда строка удаляется с листа, строки под ней перенумеровываются, даже когда сценарий продолжает выполняться. Если впоследствии сценарий попытается также удалить эти строки, результат будет непредсказуемым. По этой причине при удалении строк следует действовать снизу вверх. В вашем случае так:

for (var i = row_del.length — 1; i>=0; i—)
user3717023user3717023 20 Июн 2016 в 14:52

Это сценарий, который я использовал для удаления всего, кроме определенных значений, но его можно легко изменить, чтобы сохранить определенные строки, и он работает намного быстрее, чем цикл по всем фильтрам данных и удаляет значения, которые вы хотите удалить, и массовое удаление. в моих данных было около 10000 строк, поэтому цикл занял бы вечность.

function DeleteCertainRows()< columnCopy(«D»,»Z»,»YourSheetName»);//Copy from your target column in this case D to another column in this case Z replaceInSheet(«Z»,»YourSheetName»,»keep String 1″,»keep»);//find and replace the value with what you want to keep replaceInSheet(«Z»,»YourSheetName»,»keep String 2″,»keep»);//Can repeat for additional values DeleteValueInColumn(«Z»,»YourSheet»,»keep»);//filters and deletes all other values Column is case sensitive and cant go past Z >; function replaceInSheet(repColumn,sheetname, to_replace, replace_with) < var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); var values = sheet.getRange(repColumn+’1:’+repColumn+sheet.getMaxRows()); var textFinder = values.createTextFinder(to_replace); var replaceall = textFinder.replaceAllWith(replace_with); >; function columnCopy(copyfrm,copyto,sheetname)< var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); var copyrange = sheet.getRange(copyfrm+’1:’+copyfrm+sheet.getMaxRows()); var pasterange = sheet.getRange(copyto+’1:’+copyto+sheet.getMaxRows()); copyrange.copyTo(pasterange); >; function DeleteValueInColumn(colStr, sheetname, deleteval)< var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); var filterRange=sheet.getDataRange(); var myFilter = filterRange.createFilter(); var CriteriaBuild = SpreadsheetApp.newFilterCriteria(); var Criteria = CriteriaBuild.whenTextDoesNotContain(deleteval);//change to whenTextContains to delete your string value instead of everything else var myCriteria = Criteria.build(); var str = colStr; var myCol = parseInt(str.charCodeAt(0) — 64); Logger.log(myCol); myFilter.setColumnFilterCriteria(myCol, myCriteria); var deleterange=sheet.getRange(‘2:’+sheet.getLastRow()); sheet.deleteRows(deleterange.getRow(), deleterange.getNumRows()); myFilter.remove(); >;
kylelove41 24 Апр 2019 в 21:54

Чтобы удалить пустые строки из одного именованного листа, если в столбце 1 есть данные в действительных строках. Найдите и удалите от самого высокого номера строки до самого низкого номера строки.

Не обновляется Гугл таблицы

// Deletes any row whose first column is blank // WARNING: Assumes any valid row has data in column 1 function deleteBlankRows() < var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName(«Sheet3″); var lastRow = SpreadsheetApp.getActiveSheet().getLastRow(); for (var i = lastRow; i >0; i—) < var range = sheet.getRange(i,1); var data = range.getValue(); if (data == ») < sheet.deleteRow(i); >> >
Randy Leberknight 4 Июн 2019 в 00:07

Обратитесь к функции блокировки, предложенной командой Google:

var lock = LockService.getScriptLock(); lock.waitLock(30000); // lock 30 seconds //do whatever you want here lock.releaseLock();

Таким образом, вы получаете задание по удалению работы по одному разу! Системный поток не перейдет к другим заданиям, пока не истечет 30 секунд или не будет снята блокировка.

Toma 24 Сен 2019 в 13:24

Так вот как это должно выглядеть?

function myFunction() < var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName(«Sheet1»); var values = sheet.getRange(«A:A»).getValues(); var row_del = new Array(); for(var i=0;i> // Logger.log(row_del); // GmailApp.sendEmail(«my_email_address», «subject», row_del) for (var i = row_del.length — 1; i>=0; i—) < sheet.deleteRow(row_del[i]); >>
DavidJ101 10 Фев 2017 в 18:55

Вы можете просто удалить строки, изменив последнюю строку, используя функцию deleteRows следующим образом:

var maxRows = newsheet.getMaxRows(); var lastRow = newsheet.getLastRow(); if (maxRows-lastRow != 0)
Alexander 31 Авг 2018 в 12:31

Обновление 2020

Более быстрый и современный подход на JavaScript — использование forEach и обратным ( ) для итерации в обратном направлении.

Более разумно использовать плоский десять массив values , поскольку он касается данных одного столбца.

Решение:

function myFunction() < const doc = SpreadsheetApp.getActiveSpreadsheet(); const sheet = doc.getSheetByName(«file.csv»); const values = sheet.getRange(«N2:N»).getValues().flat(); values.reverse().forEach((r,i)=> < if (r==’del’)< sheet.deleteRow(values.length-i+1); >>); >
Marios 23 Ноя 2020 в 20:38

Увеличивайте i, только если вы не удаляли строку

function del_F_rows() < var i=1; while(!sht_balanceHistory.getRange(i,1).isBlank())< if(sht_balanceHistory.getRange(i,3).getValue()==»F») sht_balanceHistory.deleteRow(i); else i=i+1; >>

Источник: question-it.com

Рейтинг
Загрузка ...