javascript - 添加两个持续时间值

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

我有一个应用程序脚本代码,它在两列中添加值并在第三列中显示结果。即将 B 列值(持续时间)添加到 D 列(持续时间),结果显示在 E 列中。但我的代码显示错误该怎么办

function adder()
 {
 var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet5');
 var lastRow = sheet.getLastRow(); 
 var cell = sheet.getRange('B1:B'+lastRow).getValues();
 var data = sheet.getRange('D1:D'+lastRow).getValues();
  for (var i = 0; i < lastRow; i++){
     var value1 = cell[i][0];
     var value2 = data[i][0];
     var range = sheet.getRange('E'+(i+1)).setFormula(value1+value2);
     var formattedDate = Utilities.formatDate(new Date(range.getValue()), 'GMT', 'dd/MM/yyyy 
                         HH:mm:ss');
     }
     sheet.getRange('E' + (i+1).toString()).setValue(formattedDate);
   }  

错误截图已上传至ERROR message

      function dateAdd() 
         {
         var ss = 
          SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet5');
        var range = ss.getRange('E23').setFormula('D23+B23');
        var formattedDate = Utilities.formatDate(range.getValue(), 'GMT', 
                                        'dd/MM/yyyy HH:mm:ss');
         }   

上面的代码适用于单行,我想将其设置为循环。

最佳答案

试试这个:

在读取数据之前将持续时间列重新格式化为“#.##########”并使用 Range.getDisplayValue()s,然后格式化回“[h]:mm:ss”不要遇到字符串与数字的问题。

function runThree() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet5');
  var rgB=sh.getRange(2,2,sh.getLastRow()-1,1);
  var rgD=sh.getRange(2,4,sh.getLastRow()-1,1);
  var rgE=sh.getRange(2,5,sh.getLastRow()-1,1);
  rgE.clearContent();
  rgB.setNumberFormat("#.##########");//increased precision improves round off
  rgD.setNumberFormat("#.##########");
  var vB=rgB.getDisplayValues();
  var vD=rgD.getDisplayValues();
  rgB.setNumberFormat("[h]:mm:ss");
  rgD.setNumberFormat("[h]:mm:ss");
  var vE=[];
  SpreadsheetApp.flush();
  for(var i=0;i<vB.length;i++){
    var sum=vB[i][0]+vD[i][0];
    vE.push([Number(vB[i][0])+Number(vD[i][0])%24]);     
  }
  rgE.setValues(vE);
  rgE.setNumberFormat("[h]:mm:ss")
}  

运行前的表 5:

enter image description here

运行后的表 5:

enter image description here

我惊讶地发现持续时间将显示高达 1150 小时的小时值。

关于javascript - 添加两个持续时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59518770/

相关文章:

google-apps-script - 如果该行中的单元格值为 0 或空白,则删除 Google 电子表格中的一行

javascript - 将自定义域与 Firebase 动态链接结合使用

javascript - 如何从 MVC Razor 代码为包含的 JS 文件执行 JavaScript 函数?

javascript - 如何修复 Vue 警告] : Unknown custom element: <password-input>?

javascript - Express JS 中的 POST 函数

php - 使用 MySQL Datetime 比较 PHP 中的时间

google-apps-script - 从一列收集所有唯一值并将它们输出到另一列中..?

javascript - jQuery 加载具有特定类的前十个元素

php - 将 PHP 中的日期时间字符串保存到 MySQL 中

python-3.x - Pandas 将时间戳列转换为日期时间