• Как удалить листы вложенным циклом?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Пример в Таблице https://docs.google.com/spreadsheets/d/1jyvFyJ8BHX...

    Как вариант, более универсальное решение

    function run() {
      const book = SpreadsheetApp.getActive();
      const matcher = new RegExp('метка (\\d+$)', 'i');
      const sheetChecker = (sheet) => {
        const [_, num] = sheet.getSheetName().match(matcher) || [];
        if (Number(num) >= 2 || Number(num) <= 6)
          book.deleteSheet(sheet);
      }
      deleteSheets_(book, sheetChecker);
    }
    
    /**
     * @param {globalThis.SpreadsheetApp.Spreadsheet} book
     * @param {SheetChecker} sheetChecker
     * @returns {void}
     */
    function deleteSheets_(book, sheetChecker) {
      book.getSheets().forEach(sheet => {
        if (sheetChecker(sheet)) {
          book.deleteSheet(sheet);
        }
      });
    }
    
    /**
     * Проверяет, подходит ли лист для обработки
     * @callback SheetChecker
     * @param {globalThis.SpreadsheetApp.Sheet} sheet
     * @returns {boolean}
     */


    Теперь, переопределяя sheetChecker, можно удалять любые листы, которые будут валидны проверке в этой функции.
    Ответ написан
    Комментировать
  • Как перевести результат функции в текст, сохранив гиперссылку?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Можно так, например:
    function createClickableUrls(sheetName="Лист1", rangeName="A:A"){
      let urlsRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(rangeName);
      let urls = urlsRange.getValues();
      let formulas = urls.map(row=>row.map(url=>url?`=HYPERLINK("${url}";"${url}")`:""));
      urlsRange.setValues(formulas);
    };
    Ответ написан
    Комментировать
  • Как сделать ВПР по всем листам в Google Таблице?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Сделать триггер, в котором при изменении таблицы будет переписываться формула. В формуле можно получить все данные и тут же сделать ВПР()
    Что-то вроде:
    =arrayformula(i(A2:A="";"";впр(A2:A;{
    Лист1!A:B;
    Лист2!A:B;
    Лист3!A:B
    };0)))
    Ответ написан
    1 комментарий