Как написать скрипт поиска и замены в ведомостях - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь написать скрипт, который принимает текстовую версию формулы, начинающуюся с «@», и заменяет ее на «=», чтобы формула действительно работала.Я пытался использовать формулы замены и замены, но после запуска этих формул исходные формулы не работают.

Вот ссылка на таблицу:

https://docs.google.com/spreadsheets/d/1OTVzynWNsi7NJ6-3gFonrrWhy2lKq_ibe6KG-p5Yibk/edit#gid=725037056

Вот как выглядит мой текущий скрипт:

var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('A1').activate();
  spreadsheet.getRange('Formulas!A16:M17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A2').activate();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
  currentCell.activateAsCurrentCell();

  //This is where the find replace formula needs to go
  currentCell.toString().replace("@", "=");

1 Ответ

0 голосов
/ 08 июля 2019

Попробуйте так:

function copyFormulas() {
  var ss=SpreadsheetApp.getActive();
  var ssh=ss.getSheetByName('Formulas');
  var srg=ssh.getRange('A16:M17');
  var vA=srg.getValues();
  for(var i=0;i<vA[1].length;i++) {
    vA[1][i]=vA[1][i].toString().replace('@','=');    
  }
  var dsh=ss.getSheetByName('Script');
  dsh.getRange(1,1,1,srg.getWidth()).setValues([vA[0]]);
  dsh.getRange(2,1,1,srg.getWidth()).setFormulas([vA[1]]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...