создать l oop через каждую ячейку в указанном диапазоне c нескольких листов Google и, если условие истинно, выполнить задачу - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу создать l oop через каждую ячейку в указанном диапазоне c нескольких листов Google, и если в ячейке нет формулы, и ячейка не пуста, то Очистить значение ячейки.

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

Script

function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('Reset sheet')
  .addItem('Reset Current Sheet', 'ResetCurrentSheet')
  .addToUi();
}
function ResetCurrentSheet(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var rangesAddressesList = ['D6', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D17', 'D19', 
  'D20', 'D21', 'D23', 'D25', 'D26', 'D27', 'D28', 'D29', 'D30', 'D31', 'D32', 'D33', 'D34', 'D35', 'D36',
  'D37', 'D38', 'D40', 'D41', 'D42', 'D43', 'D45', 'D46', 'D47', 'D48', 'D49', 'D50', 'D51', 'D52', 'D54', 
  'D55', 'D56', 'D57', 'D58', 'D59', 'D60', 'D61', 'D63', 'D64', 'D65', 'D67', 'D68', 'D69', 'D70', 'D71', 
  'D72', 'D73', 'D75', 'D76', 'D77', 'D78', 'D79', 'D80', 'D81', 'D82', 'D83', 'D84', 'D85', 'D86', 'D87', 
  'D88', 'D90', 'D91', 'D92', 'D93', 'D94', 'D95', 'D96', 'D97', 'D98', 'D99', 'D100', 'D101', 'D102', 'D103',
  'D104', 'D105', 'D106', 'D108', 'D109', 'D110', 'D111', 'D112', 'D114', 'D115', 'D116', 'D117', 'D119', 'D120', 
  'D121', 'D123', 'D124', 'D125', 'D126', 'D127', 'D129', 'D130', 'D131', 'D132', 'D133', 'D134', 'D135', 'D136',
  'D137', 'D139', 'D141', 'D143', 'D144', 'D146', 'D148', 'D149', 'D150', 'D151', 'D152', 'D153', 'D155', 'D157', 
  'D158', 'D160', 'D161', 'D162', 'D163', 'D164', 'D165', 'D166', 'D167', 'D168', 'D170', 'D171', 'D173', 'D174', 
  'D175', 'D176', 'D177', 'D178', 'D180', 'D182', 'D183', 'D184', 'D185', 'D186', 'D187', 'D188', 'D189', 'D190',
  'D191', 'D192', 'D193', 'D194', 'D195', 'D196', 'D197', 'D198', 'D199', 'D200', 'D201', 'D202', 'D203', 'D204', 
  'D206', 'D208', 'D210', 'D212', 'D214', 'D216', 'D217', 'D219',];
  resetByRangesList_(sheet, rangesAddressesList);
}
function resetByRangesList_(sheet, rangesAddressesList){
  sheet.getRangeList(rangesAddressesList).clearContent();
}

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

get Формулы и set Значения :

function resetAllSheets() {
  SpreadsheetApp.getActive()
    .getSheets()
    .forEach(sheet => {
      const rg = sheet.getDataRange();
      rg.setValues(rg.getFormulas());
    });
}
0 голосов
/ 01 марта 2020

ES5:

function resetAllSheets() {
  var ss=SpreadsheetApp.getActive();
  var shnA=['Sheet236','Sheet237','Sheet238'];//Put your own sheet names in here
  var s="D6,D8,D9,D10,D11,D12,D13,D14,D15,D17,D19,D20,D21,D23,D25,D26,D27,D28,D29,D30,D31,D32,D33,D34,D35,D36,D37,D38,D40,D41,D42,D43,D45,D46,D47,D48,D49,D50,D51,D52,D54,D55,D56,D57,D58,D59,D60,D61,D63,D64,D65,D67,D68,D69,D70,D71,D72,D73,D75,D76,D77,D78,D79,D80,D81,D82,D83,D84,D85,D86,D87,D88,D90,D91,D92,D93,D94,D95,D96,D97,D98,D99,D100,D101,D102,D103,D104,D105,D106,D108,D109,D110,D111,D112,D114,D115,D116,D117,D119,D120,D121,D123,D124,D125,D126,D127,D129,D130,D131,D132,D133,D134,D135,D136,D137,D139,D141,D143,D144,D146,D148,D149,D150,D151,D152,D153,D155,D157,D158,D160,D161,D162,D163,D164,D165,D166,D167,D168,D170,D171,D173,D174,D175,D176,D177,D178,D180,D182,D183,D184,D185,D186,D187,D188,D189,D190,D191,D192,D193,D194,D195,D196,D197,D198,D199,D200,D201,D202,D203,D204,D206,D208,D210,D212,D214,D216,D217,D219";
  var rgA=s.split(',');
  var rowA=rgA.map(function(e){return parseInt(e.slice(1));});
  for(var i=0;i<shnA.length;i++) {
    var sh=ss.getSheetByName(shnA[i]);
    var rg=sh.getRange(rgA[0] + ':' + rgA[rgA.length-1]);
    var vA=rg.getValues();
    var fA=rg.getFormulas();
    var sr=rowA[0];
    for(var j=0;j<vA.length;j++) {
      var n=Number(j+sr);
      var idx=rowA.indexOf(n);
      if(idx!=-1 && !fA[j][0]){
        vA[j][0]='';
      }else if(idx!=-1 && fA[j][0]){
        vA[j][0]=fA[j][0];
      }
    }
    rg.setValues(vA);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...