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
Excel 在google日历和电子表格之间未生成预期结果_Excel_Google Apps Script_Calendar - Fatal编程技术网

Excel 在google日历和电子表格之间未生成预期结果

Excel 在google日历和电子表格之间未生成预期结果,excel,google-apps-script,calendar,Excel,Google Apps Script,Calendar,因此,我有一些代码,可以根据会议的工作表创建日历事件,但我似乎无法让它像我预期的那样工作-我有第24列和第25列要跟踪它是否被放入日历和日历事件id,我不希望它被删除,然后为已经添加的事件创建一个新事件(因为这个电子表格可能会变大)这就是为什么我会在编辑时跟踪via的原因。但它似乎每次都会创建一个新的事件。如果有人能看一下,那就太好了,因为我已经为此奋斗了3天。 非常感谢 //push new events to calendar; function pushToCalendar() {

因此,我有一些代码,可以根据会议的工作表创建日历事件,但我似乎无法让它像我预期的那样工作-我有第24列和第25列要跟踪它是否被放入日历和日历事件id,我不希望它被删除,然后为已经添加的事件创建一个新事件(因为这个电子表格可能会变大)这就是为什么我会在编辑时跟踪via的原因。但它似乎每次都会创建一个新的事件。如果有人能看一下,那就太好了,因为我已经为此奋斗了3天。 非常感谢

//push new events to calendar;

function pushToCalendar() {

  //spreadsheet variables
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow(); 
  var range = sheet.getRange(2,1,lastRow,26);
  var values = range.getValues();   
  var updateRange = sheet.getRange('Z1');

  //calendar variables
  var calendar = CalendarApp.getCalendarById('insert calendar code here')

  //show updating message
  updateRange.setFontColor('red');

  var numValues = 0;
  for (var i = 0; i < values.length; i++) {   

    //check to see if name are filled out
    if ((values[i][0].length > 0) && (values[i][1].length > 0)) {

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// if it has been edited delete old event  

       if (values[i][23] ='n') {   
         try{
           var eventIdCell =values[i][24];
           var eventId =calendar.getEventSeriesById(eventIdCell);
           eventId.deleteEventSeries();
       } 
        catch (e) {
      // do nothing - we just want to delete if it has been edited and the old event if it still exists
        }
    }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  

      //check if it's been entered before          
      if (values[i][23] !='y') {  

        var newEventTitle = values[i][0] + ' - ' + values[i][1]+' - ' + 'Sample';         
        var newEvent = calendar.createAllDayEvent(newEventTitle, new Date(values[i][6]));

        //get ID
        var newEventId = newEvent.getId();

        //mark as entered, enter ID
        sheet.getRange(i+2,24).setValue('y');
        sheet.getRange(i+2,25).setValue(newEventId);

      }
    }

    numValues++;
    }

  //hide updating message
  updateRange.setFontColor('white');
}

//////////////////////////////////////////////////////////////////////////////////////////////////////

//add a menu when the spreadsheet is opened
function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];  
  menuEntries.push({name: "Update Calendar", functionName: "pushToCalendar"}); 
  sheet.addMenu("Jobs Calendar", menuEntries);  
}

//////////////////////////////////////////////////////////////////////////////////////////////////////

function onEdit(event){
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var actSht = event.source.getActiveSheet();
 var actRng = event.source.getActiveRange();
 var activeCell = actSht.getActiveCell();
 var row = activeCell.getRow();

  if(row < 2){
    return; //If header row then return
  }
  else{
  var index = actRng.getRowIndex();
  var updateCalCell = actSht.getRange(index,24);
  var eventIdCell = actSht.getRange(index,25);

   change updated on colander status to n
  updateCalCell.setValue('n');
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//将新事件推送到日历中;
函数pushToCalendar(){
//电子表格变量
var sheet=SpreadsheetApp.getActiveSheet();
var lastRow=sheet.getLastRow();
var范围=sheet.getRange(2,1,最后一行,26);
var values=range.getValues();
var updateRange=sheet.getRange('Z1');
//日历变量
var calendar=CalendarApp.getCalendarById('在此处插入日历代码')
//显示更新消息
setFontColor('red');
var numValues=0;
对于(var i=0;i0)和&(值[i][1]。长度>0)){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//如果已编辑,请删除旧事件
如果(值[i][23]='n'){
试一试{
var eventIdCell=值[i][24];
var eventId=calendar.getEventSeriesById(eventIdCell);
eventId.deleteEventSeries();
} 
捕获(e){
//不执行任何操作-我们只想删除已编辑的事件,并删除仍存在的旧事件
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
//检查以前是否输入过
如果(值[i][23]!='y'){
var newEventTitle=values[i][0]+'-'+values[i][1]+'-'+'Sample';
var newEvent=calendar.createAllDayEvent(newEventTitle,新日期(值[i][6]);
//取得身份证
var newEventId=newEvent.getId();
//标记为已输入,输入ID
表.getRange(i+2,24).setValue('y');
sheet.getRange(i+2,25).setValue(newEventId);
}
}
numValues++;
}
//隐藏更新消息
updateRange.setFontColor(“白色”);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//打开电子表格时添加菜单
函数onOpen(){
var sheet=SpreadsheetApp.getActiveSpreadsheet();
var指数=[];
push({name:“更新日历”,functionName:“pushToCalendar”});
添加菜单(“工作日历”,菜单);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
函数onEdit(事件){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var actSht=event.source.getActiveSheet();
var actRng=event.source.getActiveRange();
var activeCell=actSht.getActiveCell();
var row=activeCell.getRow();
如果(第2行){
return;//如果是标题行,则返回
}
否则{
var index=actRng.getRowIndex();
var updateCalCell=actSht.getRange(索引,24);
var eventIdCell=actSht.getRange(索引,25);
将colander状态更新为n
updateCalCell.setValue('n');
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////

您在条件中犯了一个简单的错误:比较中的相等运算符是
=
而不是
=
,更改该值,它将起作用

if (values[i][23] =='n') {

你可以用一些数据创建一个共享的SS副本以便于测试吗?当然这是链接::D非常感谢我在错误的地方寻找问题