javascript - Google 电子表格中月份的滚动方案(从当前日期自动更新)

标签 javascript google-apps-script google-sheets

我们有一个预测表,需要 Apps 脚本来更新 D1:N1 中的单元格。

我可以按今天的方式进行更新,但只有当单元格 D1 中的月份是十月时,它才会更新。当十一月很快寒冷时,这将没有帮助:)

我可以以某种方式引用数组吗?或者如何解决这个问题?我也可以继续这样做,但代码确实会,至少可以说,看起来不太好看。

enter image description here

function myFunction() {

var date = new Date();
var mt = date.getMonth();
var currentD     

   if  (mt === 0) {
   currentD = "JAN (qty)";
  }if (mt === 1) {
   currentD = "FEB (qty)";
  }if (mt === 2) {
   currentD = "MAR (qty)";
  }if (mt === 3) {
   currentD = "APR (qty)";
  }if (mt === 4) {
   currentD = "MAJ (qty)";
  }if (mt === 5) {
   currentD = "JUNI (qty)";   
  }if (mt === 6) { 
   currentD = "JULY (qty)"; 
  }if (mt === 7) {
   currentD = "AUG (qty)";  
  }if (mt === 8) {
   currentD = "SEP (qty)";  
  }if (mt === 9) {
   currentD = "OKT (qty)";  
  }if (mt === 10){
  currentD = "NOV (qty)";
  }else if (mt === 11){
  currentD = "DEC (qty)";
  }

 Logger.log("CurrentD: " +currentD); 

  var spr = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spr.getSheets()[0];

 //D_MONTH    
 var range = sheet.getRange("D1");
 var cell = range.getCell(1, 1);
 var D_MONTH = cell.getValue();
 Logger.log("D_MONTH: " + D_MONTH);


  if(D_MONTH != currentD) {

     cell.setValue(currentD);
  }


   //E_MONTH    
 var range = sheet.getRange("E1");
 var cell = range.getCell(1, 1);
 var E_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("NOV (qty)");
  }

  //F_MONTH    
 var range = sheet.getRange("F1");
 var cell = range.getCell(1, 1);
 var F_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("DEC (qty)");
  }

    //G_MONTH    
 var range = sheet.getRange("G1");
 var cell = range.getCell(1, 1);
 var G_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("JAN (qty)");
  }

   //H_MONTH    
 var range = sheet.getRange("H1");
 var cell = range.getCell(1, 1);
 var H_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("FEB (qty)");
  }


    //I_MONTH    
 var range = sheet.getRange("I1");
 var cell = range.getCell(1, 1);
 var I_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("MAR (qty)");
  }

    //J_MONTH    
 var range = sheet.getRange("J1");
 var cell = range.getCell(1, 1);
 var J_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("APR (qty)");
  }

    //K_MONTH    
 var range = sheet.getRange("K1");
 var cell = range.getCell(1, 1);
 var K_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("MAJ (qty)");
  }

     //L_MONTH    
 var range = sheet.getRange("L1");
 var cell = range.getCell(1, 1);
 var L_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("JUNI (qty)");
  }

      //M_MONTH    
 var range = sheet.getRange("M1");
 var cell = range.getCell(1, 1);
 var M_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("JULY (qty)");
  }

     //N_MONTH    
 var range = sheet.getRange("N1");
 var cell = range.getCell(1, 1);
 var N_MONTH = cell.getValue();



  if(currentD === "OKT (qty)") {

     cell.setValue("AUG (qty)");
  }






}

最佳答案

不要重复自己 - 如果您的代码开始看起来像一种模式,那么您很有可能将其重构为更简洁的内容。

这应该可以满足您的需要。它检查第一列,如果是当前月份则返回。如果不是,它会开始用当前月份名称覆盖,并将右侧的以下月份名称覆盖到下一年。

function setDates(){
  var monthNames = ["Jan", "Feb", "Mar",
                    "Apr", "May", "Jun",
                    "Jul", "Aug", "Sep",
                    "Oct", "Nov", "Dec"];

  var currentMonths = SpreadsheetApp.getActiveSpreadsheet().getRange("D1:N1").getValues()[0];
  var currentMonth = new Date().getMonth();

  if (currentMonths[0] == monthNames[currentMonth]){return;}

  for (var col = 0; col < currentMonths.length; col++){
    SpreadsheetApp.getActiveSpreadsheet()
                  .getActiveSheet()
                  .getRange(1,4+col)
                  .setValue(monthNames[(currentMonth + col > 11 ?
                                        currentMonth + col - 12 :
                                        currentMonth + col)]);
  }
}

关于javascript - Google 电子表格中月份的滚动方案(从当前日期自动更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33363182/

相关文章:

javascript - 如何从JS中的日期选择器获取日期值(MM-DD-YYYY)

javascript - 用于循环/环形缓冲区的 npm 托管库

javascript - 使用 Javascript 读/写 Google 电子表格单元格提要

javascript - 无法运行ReactJS的Hello World示例

google-apps-script - 查找文本(多次)并突出显示

javascript - 仅搜索我拥有的文件

google-apps-script - 使电子表格只能通过脚本编辑

python - Python 的 gspread 中特定 Google 表格电子表格的持续性 SpreadsheetNotFound 错误

javascript - 根据一些参数遍历 HTML 表格

javascript - 使用 $q 同步多个 Angular $http 调用/使用 $q.catch 进行错误处理