Google Sheets Script для поиска формул и копирования / вставки их в заметки - PullRequest
0 голосов
/ 05 марта 2020

Мне нравится копировать / вставлять в качестве значений все мои старые листы для экономии ресурсов, но я не хочу удалять формулы, поскольку полагаюсь на них для их воссоздания в будущем (некоторые из них довольно сложные). Я подумал, что хорошей альтернативой было бы скопировать каждую формулу в примечание к ее ячейке, прежде чем вставлять только значения, поэтому я подумал, что мог бы написать скрипт для этого, желательно по всей рабочей таблице. Признаюсь, я гуглю, когда я go здесь, но я на правильном пути? У меня есть правильные переменные, чтобы начать работать с l oop?

        function CopyFormulaToNote() {

        /* I dont' want to get just the active sheet but all of them
        look into how to do that */

      var ss=SpreadsheetApp.getActive().getActiveSheet();
      var lr=ss.getLastRow();
      var lc=ss.getLastColumn();
      var range=ss.getRange(1,1,lr,lc);

        /* Find the first formula in the entire spreadsheet
        I doubt it will just find all formulas per se without specifying that a formula begins with =
        although there is a getFormula function...
        and if I do have to specify that I think what I have below says to look for = as the first character */

      var search=range.createTextFinder().matchFormulaText("^[=]");  //search for formula ie first character =
      var result=search.getCurrentMatch();      //I *think* this would get the 1st result
      var cell=result.getCell(row, column);    //get the cell range of the result
      var note=cell.setNote(note);             //create a cell note for that cell



      /* and now create a loop to do it everywhere that includes */

result.CopyTo(note);  //copy the result into the note

    }

1 Ответ

3 голосов
/ 05 марта 2020
  • Вы хотите извлечь формулы из всех ячеек на всех листах в электронной таблице Google.
  • Вы хотите поместить извлеченные формулы в каждую ячейку в качестве примечания.
  • Вы Хотите добиться этого, используя Google Apps Script.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Я думал, что в вашем случае сценарий может быть проще на getFormulas() и setNotes().

Пример сценария:

function myFunction() {
  SpreadsheetApp
  .getActiveSpreadsheet()
  .getSheets()
  .forEach(function(sheet) {
    var range = sheet.getDataRange();
    range.setNotes(range.getFormulas());
  });
}

Ссылки:

Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...