Google sheets 遍历范围并匹配值

Google sheets 遍历范围并匹配值,google-sheets,google-calendar-api,Google Sheets,Google Calendar Api,我有一个有两张表的电子表格:周,事件 工作表“周”(日历周在A列,本周开始日期在B列): 2016年1月4日01 2016年1月11日02 03 2016年1月18日 04 2016年1月25日 2016年2月1日05日 一直到第52周 “事件”表有以下列: 设施,重复,属于周,周开始,项目,操作,状态 它是这样填充的(行数不同): 萨洛纳,月刊,2016年1月4日,地板,拖地,创建 脚本如下所示: function createEventmanually (title, date) { var

我有一个有两张表的电子表格:周,事件

工作表“周”(日历周在A列,本周开始日期在B列):

2016年1月4日01

2016年1月11日02

03 2016年1月18日

04 2016年1月25日

2016年2月1日05日

一直到第52周

“事件”表有以下列:

设施,重复,属于周,周开始,项目,操作,状态

它是这样填充的(行数不同):

萨洛纳,月刊,2016年1月4日,地板,拖地,创建

脚本如下所示:

function createEventmanually (title, date)
{
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveRange().getRowIndex();
var EventStatus = sheet.getRange(row, 7).setValue("Created");
var title = sheet.getRange(row,1).getValue()+"  "+"Week "+sheet.getRange(row,3).getValue()+"   "+sheet.getRange(row,5).getValue()+":"+"  "+sheet.getRange(row,6).getValue();
var cal = CalendarApp.getCalendarsByName('RM') [0];
var date = sheet.getRange(row,4).getValue();
var event = cal.createAllDayEvent(title, date);
}
我手动将日历日期从工作表周复制并粘贴到工作表事件中的“周开始”列。然后每次运行脚本以创建事件。 如何使这个过程自动化?我知道这可以通过迭代来完成,但我无法理解。
提前感谢您。

如果您想要的是52个日历事件(每周一个),每个不同的时间段 任务在事件表中,此代码是您需要如何执行的

function createAllEventsForTheYear() {
  var allRowsOfDataInEventSheet,allDataInWeekSheet,cal,eventSh,i,j,L,Lj,lastRowInEventSheet,lastRowInWeekSheet,
      lastColumnInEventSheet,lastColInWeekSh,ss,row,
      weekNumberSheet,rowDataBeingProcessedFromEventsSheet,thisEventTitle,thisWeeksDate;

  cal = CalendarApp.getCalendarsByName('RM')[0];
  ss = SpreadsheetApp.getActiveSpreadsheet();

  eventSh = ss.getSheetByName('Events');
  weekNumberSheet = ss.getSheetByName('Week#');

  lastRowInEventSheet = eventSh.getLastRow();
  lastRowInWeekSheet = weekNumberSheet.getLastRow();

  lastColumnInEventSheet = eventSh.getLastColumn();
  lastColInWeekSh = weekNumberSheet.getLastColumn();

  allRowsOfDataInEventSheet = eventSh.getRange(2, 1, lastRowInEventSheet-1, lastColumnInEventSheet).getValues();
  allDataInWeekSheet = weekNumberSheet.getRange(2, 1, lastColInWeekSh-1, lastColInWeekSh).getValues();

  L = allRowsOfDataInEventSheet.length;
  Lj = allDataInWeekSheet.length;

  for (i=0;i<L;i+=1) { //Loop through every row of data in the Events sheet
    rowDataBeingProcessedFromEventsSheet = allRowsOfDataInEventSheet[i];//Get one row of data
    thisEventTitle = rowDataBeingProcessedFromEventsSheet[0] + "Week" + rowDataBeingProcessedFromEventsSheet[2] + "  " + rowDataBeingProcessedFromEventsSheet[4] + ":  " + rowDataBeingProcessedFromEventsSheet[5];

    for (j=0;j<Lj;j+=1) {//For every row in the Events sheet, create an event for every week of the year.  52 events for this event type
      thisWeeksDate = allDataInWeekSheet[j][1];//Get the date from the second column of the data in the Weeks# sheet
      cal.createAllDayEvent(thisEventTitle, thisWeeksDate);
    };

    eventSh.getRange(i+2, 7).setValue("Created");//I starts at 0, data starts on row 2
  };
};
函数createAllEventsForTheYear(){
变量allRowsOfDataInEventSheet,allDataInWeekSheet,cal,eventSh,i,j,L,Lj,lastRowInEventSheet,lastRowInWeekSheet,
lastColumnInEventSheet,lastColInWeekSh,ss,世界其他地区,
周编号表,rowDataBeingProcessedFromEventsSheet,thisEventTitle,ThisWeekDate;
cal=CalendarApp.getCalendarsByName('RM')[0];
ss=电子表格应用程序。getActiveSpreadsheet();
eventSh=ss.getSheetByName('Events');
weekNumberSheet=ss.getSheetByName('Week#');
lastRowInEventSheet=eventSh.getLastRow();
lastRowInWeekSheet=weekNumberSheet.getLastRow();
LastColumnEventSheet=eventSh.getLastColumn();
lastColInWeekSh=weekNumberSheet.getLastColumn();
allRowsOfDataInEventSheet=eventSh.getRange(2,1,lastRowInEventSheet-1,lastColumnInEventSheet).getValues();
allDataInWeekSheet=weekNumberSheet.getRange(2,1,lastColInWeekSh-1,lastColInWeekSh).getValues();
L=所有行的Dataineventsheet.length;
Lj=周表中的所有数据。长度;

对于(i=0;i如果您想要的是52个日历事件(每周一个),每个不同的 任务在事件表中,此代码是您需要如何执行的

function createAllEventsForTheYear() {
  var allRowsOfDataInEventSheet,allDataInWeekSheet,cal,eventSh,i,j,L,Lj,lastRowInEventSheet,lastRowInWeekSheet,
      lastColumnInEventSheet,lastColInWeekSh,ss,row,
      weekNumberSheet,rowDataBeingProcessedFromEventsSheet,thisEventTitle,thisWeeksDate;

  cal = CalendarApp.getCalendarsByName('RM')[0];
  ss = SpreadsheetApp.getActiveSpreadsheet();

  eventSh = ss.getSheetByName('Events');
  weekNumberSheet = ss.getSheetByName('Week#');

  lastRowInEventSheet = eventSh.getLastRow();
  lastRowInWeekSheet = weekNumberSheet.getLastRow();

  lastColumnInEventSheet = eventSh.getLastColumn();
  lastColInWeekSh = weekNumberSheet.getLastColumn();

  allRowsOfDataInEventSheet = eventSh.getRange(2, 1, lastRowInEventSheet-1, lastColumnInEventSheet).getValues();
  allDataInWeekSheet = weekNumberSheet.getRange(2, 1, lastColInWeekSh-1, lastColInWeekSh).getValues();

  L = allRowsOfDataInEventSheet.length;
  Lj = allDataInWeekSheet.length;

  for (i=0;i<L;i+=1) { //Loop through every row of data in the Events sheet
    rowDataBeingProcessedFromEventsSheet = allRowsOfDataInEventSheet[i];//Get one row of data
    thisEventTitle = rowDataBeingProcessedFromEventsSheet[0] + "Week" + rowDataBeingProcessedFromEventsSheet[2] + "  " + rowDataBeingProcessedFromEventsSheet[4] + ":  " + rowDataBeingProcessedFromEventsSheet[5];

    for (j=0;j<Lj;j+=1) {//For every row in the Events sheet, create an event for every week of the year.  52 events for this event type
      thisWeeksDate = allDataInWeekSheet[j][1];//Get the date from the second column of the data in the Weeks# sheet
      cal.createAllDayEvent(thisEventTitle, thisWeeksDate);
    };

    eventSh.getRange(i+2, 7).setValue("Created");//I starts at 0, data starts on row 2
  };
};
函数createAllEventsForTheYear(){
变量allRowsOfDataInEventSheet,allDataInWeekSheet,cal,eventSh,i,j,L,Lj,lastRowInEventSheet,lastRowInWeekSheet,
lastColumnInEventSheet,lastColInWeekSh,ss,世界其他地区,
周编号表,rowDataBeingProcessedFromEventsSheet,thisEventTitle,ThisWeekDate;
cal=CalendarApp.getCalendarsByName('RM')[0];
ss=电子表格应用程序。getActiveSpreadsheet();
eventSh=ss.getSheetByName('Events');
weekNumberSheet=ss.getSheetByName('Week#');
lastRowInEventSheet=eventSh.getLastRow();
lastRowInWeekSheet=weekNumberSheet.getLastRow();
LastColumnEventSheet=eventSh.getLastColumn();
lastColInWeekSh=weekNumberSheet.getLastColumn();
allRowsOfDataInEventSheet=eventSh.getRange(2,1,lastRowInEventSheet-1,lastColumnInEventSheet).getValues();
allDataInWeekSheet=weekNumberSheet.getRange(2,1,lastColInWeekSh-1,lastColInWeekSh).getValues();
L=所有行的Dataineventsheet.length;
Lj=周表中的所有数据。长度;

对于(i=0;iSandy,脚本运行良好。我刚刚将第19行中的lastColInWeekSh-1替换为lastRowInWeekSheet-1。第19行中的注释非常有用:我不是程序员,但更容易理解算法。感谢您让我知道。如果您愿意,您可以单击绿色大复选标记将答案标记为正确,如果您愿意,请向上投票.Sandy,脚本运行良好。我刚刚将第19行中的lastColInWeekSh-1替换为lastRowInWeekSheet-1。行中的注释非常有用:我不是程序员,但更容易理解算法。感谢您让我知道。如果您愿意,您可以单击绿色大复选标记将答案标记为正确,如果您愿意,请向上投票。