Google App脚本电子表格

时间:2015-01-15 19:47:28

标签: datetime google-apps-script google-sheets

Google App脚本电子表格

我正在寻找一种编辑单元格内容的方法。我搜索了Spreadsheet Service docs,并没有找到太多可以帮助我完成我希望完成的事情。

我想要做的是操纵单元格的内容。这方面的一个例子是:

  • 单元格A1包含“1PM - 5PM”
  • 我想将A1分成两个单元格,比如B1为“1PM”,C1为“5PM”
  • 然后我想将细胞B1和C1改为军事时间。所以最后B1将是13:00而C1将是17:00)

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:1)

以下示例的每个部分都可以更简洁,高效,优雅和适应性地完成 - 它真的不是很好的代码 - 但我想让组件尽可能清晰,这样你就可以看到它有效。

首先,这是一个过时的功能,可将小时数转换为24小时格式。我并不建议您使用这一点,因为它只能按照您编写的格式完成格式化工作时间,例如: " 3 PM"或" 2 AM" - "下午2:30"根本不会工作。要获得更复杂的时间转换,请查看以下答案:convert 12-hour hh:mm AM/PM to 24-hour hh:mm

function oversimplified_time_format_converter(input){
  if(input.indexOf("PM")!==-1){
    var hour = 12 + (input.substring(0,input.indexOf("PM"))*1)
    if(hour>24){hour-=24}
  } else {
    var hour = input.substring(0,input.indexOf("AM"))
    }
  return hour
  }

接下来,这是执行您提到的任务的功能,它使用上面简化的时间格式转换器功能。

function yourFunction() {

  //First, locate your data:
  var sheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheet/yourspreadsheetURL").getSheetByName("YourSheetName")
  var cell = sheet.getRange("A1")
  var cell_contents = cell.getValue() //The cell contents will be "1PM -5PM"

  //Next, locate the cells where the results will go
  var first_cell_to_the_right = cell.offset(0,1) //This is cell B1
  var second_cell_to_the_right = cell.offset(0,2) //This is cell C1

  //Next, get the text, split it into separate strings
  var first_part = cell_contents.substring(0,cell_contents.indexOf(" - ")) //This will be "1PM"
  var second_part = cell_contents.substring(cell_contents.indexOf(" - ")+3) //This will be "5PM"

  //Now convert to 24-hour time format:
  first_part = oversimplified_time_format_converter(first_part)
  second_part = oversimplified_time_format_converter(second_part)

  //Now write the results to your spreadsheet
  first_cell_to_the_right.setValue(first_part) //Set value of B1 to "1PM"
  second_cell_to_the_right.setValue(second_part) //Set value of C1 to "5PM"
}