用于复制和重命名工作表和名称的Google脚本基于单元格引用

时间:2014-05-05 12:27:30

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

我是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);

}

3 个答案:

答案 0 :(得分:4)

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

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);
}

希望有所帮助。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在代码中使用.getDisplayValue()代替.getValue()应该可以解决问题。

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