Как получить работающий скрипт google листов, который запускается только на пустых ячейках, оставляя другие ячейки нетронутыми? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть скрипт, который в настоящее время работает, но не так, как мне хотелось бы.

, который копирует данные из столбца B в G, который содержит формулы, извлекающие информацию из openweathermap.org, и вставляет значения формулы в столбцыH к L. Причина, по которой я запускаю этот скрипт, состоит в том, что формула из openweathermap.org обновляется.Я хочу, чтобы скрипт выполнялся только на пустых ячейках, оставляя ячейки, которые уже содержат данные только в столбцах H - L.(Таким образом, они вставляют значения только один раз)

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

Я ожидаю, что код будет выполняться и копироватьи данные, но чтобы игнорировать любые ячейки в столбцах H - L, если они содержат данные

Script

function moveValuesOnly1() {var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange("Sheet1!B:G"); 
source.copyTo(ss.getRange("Sheet1!H:L"),
 {contentsOnly: true});}

Я ожидаю, что код будет выполняться и копировать и данные, но игнорировать любые ячейки в столбцах Hв L, если он содержит данные

1 Ответ

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

Это было намного сложнее, чем я думал.

Попробуйте это:

function moveValuesOnly1() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var srg=sh.getRange(1,2,sh.getLastRow(),6);
  var vA=srg.getValues();
  sh.getRange(getLastRowOfRange("H:M")+1,8,srg.getHeight(),srg.getWidth()).setValues(vA);
}


function getLastRowOfRange(A1Range) {
  var A1Range=A1Range||"H:M";//default for debugging
  var ss=SpreadsheetApp.getSheetByName('Sheet1');
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(A1Range);
  var vA=rg.getValues();
  for(var i=vA.length-1;i>-1;i--) {
    if(vA[i].join("").length==0) {
      vA.splice(i,1);
    }
  }
  Logger.log(vA.length);
  return vA.length;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...