-1

我在谷歌应用脚​​本中的一个单元格有问题,如果一个单元格 =“0:00”,它需要等于一些文本,如“无故缺席”。当我运行代码时,它给了我一个空白单元格。

function Boh() {

  var sheet = SpreadsheetApp;

  var ss = sheet.getActiveSpreadsheet().getActiveSheet();

  var lastRow = ss.getLastRow();

  var spreadsheet = SpreadsheetApp.getActive();

  var b = 0;

  var wCell = 'Work';

  var x = new Date('3/16/2013 0:00:00');


  for(var i=2;i<=lastRow;i++){ 
  ss.getRange(i,10).activate();

  if(x.setHours(0,0,0,0)  == ss.getRange(i, 17).getValue() && 'Work' == ss.getRange(i, 5).getValues()){

     ss.getRange(i, 10).setValue('Unexcused Absence');
   } 

 }
4

1 回答 1

0

我不使用录制的宏,所以不确定它是如何工作的。这将向主菜单添加一个菜单项,您可以从那里运行脚本。尝试这个。

function onOpen() {
  var thisMenu = SpreadsheetApp.getUi().createMenu('Boh');
  thisMenu.addItem('Boh', 'Boh').addToUi();
}

function Boh() {
  try {
    var spread = SpreadsheetApp.getActiveSpreadsheet();
    // Be sure you are on the right sheet when you run this
    var sheet = spread.getActiveSheet();
    // Get everything
    var values = sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn()).getValues();
    // results will be put in column J later
    var results = [];
    // Skip row 1
    for(var i=1; i<values.length; i++ ) {
      //  Assuming ss.getRange(i,17).getValue() is a duration, column 17 or Q becomes values[i][16]
      if( ( Utilities.formatDate(values[i][16],Session.getScriptTimeZone(),"HH:mm:ss") === "00:00:00" ) &&
          ( values[i][4] === "Work" ) ) {
        results.push(["Unexcused Absence"]);
      }
      else {
        // Notice I push an array to make results a 2D array of n rows 1 column
        // values[i][9] is column 10 or J
        results.push([""]);
      }
    }
    // Note we skipped line 1
    sheet.getRange(2,10,results.length,1).setValues(results);
  }
  catch(err) {
    Logger.log(err);
  }
}
于 2018-11-20T18:11:52.047 回答