【问题标题】:(Google API) Dynamic Sheet and Name of Sheet Creation Script from Cell Reference(Google API)来自单元格参考的动态工作表和工作表创建脚本的名称
【发布时间】:2016-03-25 10:46:45
【问题描述】:

我的职能需要帮助,应该:

  • 复制隐藏的工作表
  • 确保不存在重复的命名工作表
  • 从单元格引用中动态命名副本
  • 显示工作表副本

这是我到目前为止所拥有的,但我对语法不太清楚: 修复:(if 语句中的 '=' 不正确,而不是 '==')


    function checkSheetName(name)
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var allSheets = ss.getSheets();
  var cSheets = ss.getNumSheets();

  for(i = 1; i < cSheets; i++)
  {
  var currentSheetName = allSheets[i].getName();
  if(currentSheetName == name);
  return true;
  }
  return false;
}

function createNextMonth()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tz = ss.getSpreadsheetTimeZone();
  var allSheets = ss.getSheets();
  var dateSheet = ss.getSheetByName("Start Date:");
  var currentSheet = ss.getActiveSheet();
  var startRange;

  // Check where to get the cell references from
  if(dateSheet != currentSheet)
    startRange = currentSheet.getRange(4,7);
  else
    startRange = currentSheet.getRange(4,7);

  var startDate = new Date(startRange.getValue());
    // Format date to MONTH (YYYY)
  var newSheetName = Utilities.formatDate(startDate, tz, "yyyy-MMMMM-dd'T'HH:mm:ss'Z'");
  if(!newSheetName)
    // Error making name
    return false;

  if(!checkSheetName(newSheetName))
    // Error duplicate
    // Inform user
    return false;

    // Locate the template sheet
  var templateSheet = ss.getSheetByName("TEMPLATE");
  if(!templateSheet)
    // Error missing
    // Couldn't find template
    return false;

    // Set the active sheet to the template sheet
  ss.setActiveSheet(templateSheet);
    // Duplicate active sheet
  ss.duplicateActiveSheet();

  // Unsure how to locate duplicated sheet

  ss.renameActiveSheet(newSheetName);

  // Unsure how to set new sheet cell B3 to startDate

  return true;
}

更新:忘了提问题是它似乎没有得到正确的日期值,或者没有得到正确的单元格。

更新 2:更正了循环中的简单语法错误,从而解决了问题。

【问题讨论】:

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


    【解决方案1】:

    这将是一个好的开始 r.e.检查重复工作表并将新副本设置为活动(信用https://ctrlq.org/code/19973-duplicate-sheet-google-spreadsheets):

    function cloneGoogleSheet() {
    
      var name = "labnol";
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName('Template').copyTo(ss);
    
      /* Before cloning the sheet, delete any previous copy */
      var old = ss.getSheetByName(name);
      if (old) ss.deleteSheet(old); // or old.setName(new Name);
    
      SpreadsheetApp.flush(); // Utilities.sleep(2000);
      sheet.setName(company);
    
      /* Make the new sheet active */
      ss.setActiveSheet(sheet);
    
    }
    

    这样的事情可能有助于使用单元格值作为名称:

      var bb = ss.getSheetByName("sheetnamehere");
      var newsheetname = bb.getRange("j6");
      var newsheetvalue = newsheetname.getValue();
      sheet.setname(newsheetvalue)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多