谷歌脚本清除多个范围。 [英] Google Script to Clear multiple ranges.

查看:105
本文介绍了谷歌脚本清除多个范围。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有许多电子表格,每周填写一次,并在新的一周开始时关闭。我已经写了一个脚本来通过并清除很多不同表单中的各种范围。见下面的代码。我的问题是有没有更好的方法来做到这一点,而不是一次清除一个区段的范围,并有一百万个clearContent函数?我无法弄清楚如何编写一个函数clearContent,我可以在同一个函数中列出很多范围。

 函数startWeek(){

var confirm = Browser.msgBox('您有**关闭星期**第一次?,按YES会清除你的星期,Browser.Buttons.YES_NO);

if(confirm =='no'){Logger.log('用户点击NO。')};
if(confirm =='yes'){
var sheet = SpreadsheetApp.getActive()。getSheetByName('INVOICE LOG');
sheet.getRange('A3:M47')。clearContent();
var sheet = SpreadsheetApp.getActive()。getSheetByName('DAILY INVENTORY');
sheet.getRange('C5:C8')。clearContent();
sheet.getRange('D6:I8')。clearContent();
sheet.getRange('C10:I10')。clearContent();
sheet.getRange('C13:C16')。clearContent();
sheet.getRange('D14:I16')。clearContent();
sheet.getRange('C18:I18')。clearContent();
sheet.getRange('C21:C24')。clearContent();
sheet.getRange('D22:I24')。clearContent();
sheet.getRange('C26:I26')。clearContent();
sheet.getRange('C29:C32')。clearContent();
sheet.getRange('D30:I32')。clearContent();
sheet.getRange('C34:I34')。clearContent();
sheet.getRange('C37:C40')。clearContent();
sheet.getRange('D38:I40')。clearContent();
sheet.getRange('C42:I42')。clearContent();
sheet.getRange('C45:C48')。clearContent();
sheet.getRange('D46:I48')。clearContent();
sheet.getRange('C50:I50')。clearContent();
sheet.getRange('C55:C58')。clearContent();
sheet.getRange('D56:I58')。clearContent();
sheet.getRange('C60:I60')。clearContent();
sheet.getRange('C63:C66')。clearContent();
sheet.getRange('D64:I66')。clearContent();
sheet.getRange('C68:I68')。clearContent();
sheet.getRange('C71:C74')。clearContent();
sheet.getRange('D72:I74')。clearContent();
sheet.getRange('C76:I76')。clearContent();
sheet.getRange('C79:C82')。clearContent();
sheet.getRange('D80:I82')。clearContent();
sheet.getRange('C84:I84')。clearContent();
sheet.getRange('C87:C90')。clearContent();
sheet.getRange('D88:I90')。clearContent();
sheet.getRange('C92:I92')。clearContent();
sheet.getRange('C95:C98')。clearContent();
sheet.getRange('D96:I98')。clearContent();
sheet.getRange('C100:I100')。clearContent();
sheet.getRange('C105:C108')。clearContent();
sheet.getRange('D106:I108')。clearContent();
sheet.getRange('C110:I110')。clearContent();
sheet.getRange('C113:C116')。clearContent();
sheet.getRange('D114:I116')。clearContent();
sheet.getRange('C118:I118')。clearContent();
sheet.getRange('C121:C124')。clearContent();
sheet.getRange('D122:I124')。clearContent();
sheet.getRange('C126:I126')。clearContent();
sheet.getRange('C129:C132')。clearContent();
sheet.getRange('D130:I132')。clearContent();
sheet.getRange('C134:I134')。clearContent();
sheet.getRange('C137:C140')。clearContent();
sheet.getRange('D138:I140')。clearContent();
sheet.getRange('C142:I142')。clearContent();
sheet.getRange('C145:C148')。clearContent();
sheet.getRange('D146:I148')。clearContent();
sheet.getRange('C150:I150')。clearContent();
var sheet = SpreadsheetApp.getActive()。getSheetByName('FOOD INVENTORY');
sheet.getRange('D5:F615')。clearContent();
var sheet = SpreadsheetApp.getActive()。getSheetByName('LIQUOR INVENTORY');
sheet.getRange('D6:G361')。clearContent();
sheet.getRange('E365:G520')。clearContent();
sheet.getRange('D524:G573')。clearContent();
var sheet = SpreadsheetApp.getActive()。getSheetByName('DAILY SALES SHEET');
sheet.getRange('B4:H10')。clearContent();
sheet.getRange('B12:H12')。clearContent();
sheet.getRange('B14:H20')。clearContent();
sheet.getRange('B22:H27')。clearContent();
sheet.getRange('B29:H30')。clearContent();
sheet.getRange('B33:H34')。clearContent();
sheet.getRange('B36:H38')。clearContent();
sheet.getRange('B43:H44')。clearContent();
var sheet = SpreadsheetApp.getActive()。getSheetByName('LAST WEEK INVENTORY');
sheet.getRange('E3:E9')。clearContent();
var sheet = SpreadsheetApp.getActive()。getSheetByName('SAFE AUDIT');
sheet.getRange('C3:P11')。clearContent();
sheet.getRange('C14:P18')。clearContent();
sheet.getRange('C22:P22')。clearContent();
var destination = SpreadsheetApp.getActiveSpreadsheet();
var name = Browser.inputBox('New Week','Enter Pub Name& WE Date(ex。SandwichWE02-02-14)',Browser.Buttons.OK);
destination.rename(name)

};
}

解决方案

不幸的是,目前还没有一种Apps Script方法可以通过单个函数调用来清除多个范围。 / p>

您可能会发现更容易管理的是定义一个或多个包含有问题的范围的数据结构(即使是简单的数组)。然后,您可以通过简单地遍历数据结构并在每个Range上调用clearContent()来清除它们。这将把跟踪你的范围的工作与清除它们的工作区分开来。数据结构也可能在你的代码的其他领域有用。



为了更好的组织,你也可以使用Spreadsheet.setNamedRange()和Spreadsheet.getNamedRange( )函数将简单的ID分配给你的范围。请注意,您不能给同一名称的多个Range。


I have many spreadsheets that get filled out weekly and closed at the start of the new week. I've written a script to go through and clear out all kinds of ranges in a lot of different sheets. See code below. My question is there a better way to do this instead of having to clear ranges one section at a time and have a million clearContent functions? I cannot figure out how to write a function to clearContent where I can list many ranges all in the same function.

function startWeek() {

  var confirm = Browser.msgBox('Did you **Close the Week** first?','Pressing YES will   clear your week', Browser.Buttons.YES_NO);

 if(confirm=='no'){Logger.log('The user clicked "NO."')};
 if(confirm=='yes'){
  var sheet = SpreadsheetApp.getActive().getSheetByName('INVOICE LOG');
    sheet.getRange('A3:M47').clearContent();
  var sheet = SpreadsheetApp.getActive().getSheetByName('DAILY INVENTORY');
    sheet.getRange('C5:C8').clearContent();
    sheet.getRange('D6:I8').clearContent();
    sheet.getRange('C10:I10').clearContent();
    sheet.getRange('C13:C16').clearContent();
    sheet.getRange('D14:I16').clearContent();
    sheet.getRange('C18:I18').clearContent();
    sheet.getRange('C21:C24').clearContent();
    sheet.getRange('D22:I24').clearContent();
    sheet.getRange('C26:I26').clearContent();
    sheet.getRange('C29:C32').clearContent();
    sheet.getRange('D30:I32').clearContent();
    sheet.getRange('C34:I34').clearContent();
    sheet.getRange('C37:C40').clearContent();
    sheet.getRange('D38:I40').clearContent();
    sheet.getRange('C42:I42').clearContent();
    sheet.getRange('C45:C48').clearContent();
    sheet.getRange('D46:I48').clearContent();
    sheet.getRange('C50:I50').clearContent();
    sheet.getRange('C55:C58').clearContent();
    sheet.getRange('D56:I58').clearContent();
    sheet.getRange('C60:I60').clearContent();
    sheet.getRange('C63:C66').clearContent();
    sheet.getRange('D64:I66').clearContent();
    sheet.getRange('C68:I68').clearContent();
    sheet.getRange('C71:C74').clearContent();
    sheet.getRange('D72:I74').clearContent();
    sheet.getRange('C76:I76').clearContent();
    sheet.getRange('C79:C82').clearContent();
    sheet.getRange('D80:I82').clearContent();
    sheet.getRange('C84:I84').clearContent();
    sheet.getRange('C87:C90').clearContent();
    sheet.getRange('D88:I90').clearContent();
    sheet.getRange('C92:I92').clearContent();
    sheet.getRange('C95:C98').clearContent();
    sheet.getRange('D96:I98').clearContent();
    sheet.getRange('C100:I100').clearContent();
    sheet.getRange('C105:C108').clearContent();
    sheet.getRange('D106:I108').clearContent();
    sheet.getRange('C110:I110').clearContent();
    sheet.getRange('C113:C116').clearContent();
    sheet.getRange('D114:I116').clearContent();
    sheet.getRange('C118:I118').clearContent();
    sheet.getRange('C121:C124').clearContent();
    sheet.getRange('D122:I124').clearContent();
    sheet.getRange('C126:I126').clearContent();
    sheet.getRange('C129:C132').clearContent();
    sheet.getRange('D130:I132').clearContent();
    sheet.getRange('C134:I134').clearContent();
    sheet.getRange('C137:C140').clearContent();
    sheet.getRange('D138:I140').clearContent();
    sheet.getRange('C142:I142').clearContent();
    sheet.getRange('C145:C148').clearContent();
    sheet.getRange('D146:I148').clearContent();
    sheet.getRange('C150:I150').clearContent();
  var sheet = SpreadsheetApp.getActive().getSheetByName('FOOD INVENTORY');
    sheet.getRange('D5:F615').clearContent();
  var sheet = SpreadsheetApp.getActive().getSheetByName('LIQUOR INVENTORY');
    sheet.getRange('D6:G361').clearContent();
    sheet.getRange('E365:G520').clearContent();
    sheet.getRange('D524:G573').clearContent();
  var sheet = SpreadsheetApp.getActive().getSheetByName('DAILY SALES SHEET');
    sheet.getRange('B4:H10').clearContent();
    sheet.getRange('B12:H12').clearContent();
    sheet.getRange('B14:H20').clearContent();
    sheet.getRange('B22:H27').clearContent();
    sheet.getRange('B29:H30').clearContent();
    sheet.getRange('B33:H34').clearContent();
    sheet.getRange('B36:H38').clearContent();
    sheet.getRange('B43:H44').clearContent();
  var sheet = SpreadsheetApp.getActive().getSheetByName('LAST WEEK INVENTORY');
    sheet.getRange('E3:E9').clearContent();
  var sheet = SpreadsheetApp.getActive().getSheetByName('SAFE AUDIT');
    sheet.getRange('C3:P11').clearContent();
    sheet.getRange('C14:P18').clearContent();
    sheet.getRange('C22:P22').clearContent();
 var destination = SpreadsheetApp.getActiveSpreadsheet();
 var name = Browser.inputBox('New Week', 'Enter Pub Name & WE Date (ex. SandwichWE02-02-14)', Browser.Buttons.OK);
   destination.rename(name)

}; }

解决方案

Unfortunately there is not currently a Apps Script method to clear multiple ranges with a single function call.

What you might find a little easier to manage is to instead define one or more data structures (even a simple array) containing the Ranges in question. Then you can clear them all by simply looping over the data structure and calling clearContent() on each Range. This would separate the work of keeping track of your Ranges from the work of clearing them. The data structure might also be useful in other areas of your code.

For better organization, you might also make use of the Spreadsheet.setNamedRange() and Spreadsheet.getNamedRange() functions to assign simple IDs to your Ranges. Note that you cannot give more than one Range the same name.

这篇关于谷歌脚本清除多个范围。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆