Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过多个google工作表的特定范围内的每个单元格创建循环,如果条件为true,则执行该任务_Javascript_Google Apps Script - Fatal编程技术网

Javascript 通过多个google工作表的特定范围内的每个单元格创建循环,如果条件为true,则执行该任务

Javascript 通过多个google工作表的特定范围内的每个单元格创建循环,如果条件为true,则执行该任务,javascript,google-apps-script,Javascript,Google Apps Script,我想在多个google表单的特定范围内创建每个单元格的循环,如果该单元格没有公式,并且该单元格不是空的,则清除单元格值 我已经试过了,但是在这里我必须手动提到每个范围/单元格地址,并且我必须在每个工作表中运行它 剧本 function onOpen() { SpreadsheetApp.getUi() .createMenu('Reset sheet') .addItem('Reset Current Sheet', 'ResetCurrentSheet') .addToUi()

我想在多个google表单的特定范围内创建每个单元格的循环,如果该单元格没有公式,并且该单元格不是空的,则清除单元格值

我已经试过了,但是在这里我必须手动提到每个范围/单元格地址,并且我必须在每个工作表中运行它

剧本

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();
}
以及:

ES5:

函数resetAllSheets(){
var ss=SpreadsheetApp.getActive();
var shnA=['Sheet236','Sheet237','Sheet238'];//在这里输入您自己的工作表名称
var s="D8、D8、D8、D8、D8、D9、D9、D10、D10、D11、D15、D17、D19、D20、D20、D21、D23、D8、D6、D8、D8、D8、D8、D8、D8、D8、D6、D8、D10、D15、D15、D17、D17、D17、D17、D17、D17、D19、D20、D21、D23、D23、D23、D23、D23、D23、D23、D23、D23、D25、D25、D25、D25、D25、D25、D26、D26、D26、D26、D26、D26、D26、D26、D26、D26、D26、D26、D26、D26、D26、D28、D26、D21、D21、D21、D21、D21、D21、D23、D23、D280、D81、D82、D83、D84、D85、D86、D87、D88、D90、D91、D92、D93、D94、D95、D96、D97、D98、D99、D100、D101、D102、D103、D104D115、D116、D117、D119、D119、D119、D120、D120、D121、D121、D117、D119、D119、D120、D121、D121、D123、D123、D124、D124、D125、D125、D125、D126、D126、D126、D126、D126、D120、D120、D120、D121、D121、D121、D121、D121、D121、D123、D121、D123、D123、D123、D123、D123、D123、D124、D124、D124、D124、D124、D121、D121、D121、D123、D123、D123、D124、D124、D124、D121、D121、D121、D123、D123、D123、D123、D120、D121、D121、D121、D121、D123、D155、D155、D155、D155、D155、D155、D155、D155、D1D185、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(函数(e){return parseInt(e.slice(1));});

对于(var i=0;它不是一个代码转换服务。到目前为止,你在Google应用程序脚本中有什么?嗨,罗斯,我已经添加了我的代码,请检查你是否可以帮助我。注意:上面的代码不会在不推荐的ES5引擎上运行。要使用该代码,.Hi-TheMaster感谢你的代码,它工作正常。但它也会删除所有标题和其他单元格。我希望它能用于或者一个特定的范围是“D6:D217”和“I6:Z217”,并且还希望排除工作表名称:“Master Sheet”。@Amit请阅读文档并尝试自己实现新目标。如果您无法实现,请在您目前的努力中提出一个新问题。嗨,Cooper,感谢您提供的代码。顺便说一句,在保存此代码时,第4行显示了一些错误。SyntaxError:意外的标记应该更好。我遗漏了匿名函数声明。
function resetAllSheets() {
  SpreadsheetApp.getActive()
    .getSheets()
    .forEach(sheet => {
      const rg = sheet.getDataRange();
      rg.setValues(rg.getFormulas());
    });
}
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);
  }
}