【问题标题】:Google script to copy and rename a sheet and name is based on a cell reference用于复制和重命名工作表和名称的 Google 脚本基于单元格引用
【发布时间】:2014-06-21 18:04:12
【问题描述】:

我是 google 脚本的新手,我需要将当前活动工作表复制到新工作表,然后根据单元格值重命名此工作表。我的问题是单元格值是一个日期,下面的代码有效,但是在重命名工作表 30-May-2014 时,它返回的数字是等效的 41789。如何粘贴实际日期。

function CreateNewTimesheet() {

  // The code below makes a duplicate of the active sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();

  // The code below will rename the active sheet to Month End date based on cell O3
 var myValue = SpreadsheetApp.getActiveSheet( ).getRange("O3").getValue();
 SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(myValue);

}

【问题讨论】:

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


    【解决方案1】:

    您需要将值格式化为字符串,然后使用它来设置名称。

    var localTimeZone = "Europe/London";
    var dateFormatForFileNameString = "yyyy-MM-dd'at'HH:mm:ss";
    
    function CreateNewTimesheet() {
    
      // The code below makes a duplicate of the active sheet
      var ss = SpreadsheetApp.getActiveSpreadsheet()
      SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();
    
      // The code below will rename the active sheet to Month End date based on cell O3
     var myValue = SpreadsheetApp.getActiveSheet( ).getRange("O3").getValue();
     var dateString = getDateString_(myValue);
     SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(dateString);
    }
    
    //Function to get Date as a string
    function getDateString_(dateValue) {
          return Utilities.formatDate(dateValue, localTimeZone,
                                      dateFormatForFileNameString);
    }
    

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      你需要构造一个新的 Date(myValue),然后在 Utilities 类中查找日期格式化函数。

      【讨论】:

      • 我进行了以下更改,工作表以日期格式重命名,但日期不同。单元格显示为 2014 年 5 月 30 日。工作表正在重命名为 2014-05-08。我究竟做错了什么? function CreateNewTimesheet() { // 下面的代码将根据单元格 O3 将活动工作表重命名为月末日期 var myValue = new Date(SpreadsheetApp.getActiveSheet( ).getRange("O3").getValue); var formattedDate = Utilities.formatDate(new Date(),"GMT", "yyyy-MM-dd"); SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(formattedDate); }
      • 在网上阅读有关日期格式的信息。您正在使用“yyyy-MM-dd”
      【解决方案3】:

      只需在代码中使用 .getDisplayValue() 代替 .getValue() 就可以了。

      它将单元格中显示的值作为字符串获取,并考虑日期格式等因素,因此当您使用它重命名工作表时,工作表名称将与您在单元格中看到的名称相同。

      【讨论】:

        猜你喜欢
        • 2019-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-27
        • 2021-12-30
        • 2018-03-09
        • 2023-03-29
        • 1970-01-01
        相关资源
        最近更新 更多