Google sheets 遍历范围并匹配值
我有一个有两张表的电子表格:周,事件 工作表“周”(日历周在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日,地板,拖地,创建 脚本如下所示: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
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。行中的注释非常有用:我不是程序员,但更容易理解算法。感谢您让我知道。如果您愿意,您可以单击绿色大复选标记将答案标记为正确,如果您愿意,请向上投票。