【问题标题】:I want change cell values from some sheet in many sheet by google spread sheet script我想通过谷歌电子表格脚本从许多工作表中的一些工作表中更改单元格值
【发布时间】:2020-12-30 09:12:12
【问题描述】:
function UpdateCell()
{
  const NotationRange = "J1";
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheets = ss.getSheets();
  const year = 2020;
  sheets.forEach
  (
    (sheet) => 
    { const sheetName = sheet.getName();
       { sheet.getRange(NotationRange).setValue(year+'.'+sheetName);
       }
    }
  )
}

在谷歌电子表格脚本中

上面的代码运行良好且快速 但是,它改变了所有的工作表

工作表名称有规则。所以,可以区分

我想要的是更改工作表名称包含 [周] 的特定工作表中的单元格值

在我的工作表名称中是 [Reference],[01.01],[01.02],,,,[12.31],[week01],[week02],,,[week53]

所以我尝试但失败了..

function UpdateCell()
{
  const NotationRange = "B2:D5"
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheets = ss.getSheets();
  const year = 2020
  const checkDailyWord = ".";
  const checkWeekWord = "week";
  var DC = new RegExp('\\b' + checkDailyWord + '\\b');
  var WC = new RegExp('\\b' + checkWeekWord + '\\b');
  sheets.forEach
  (
    (sheet) => 
    { const sheetName = sheet.getName();
       if( DC.sheetName == 1 )
       { sheet.getRange(NotationRange).setValue(year+'.'+sheetName);
       }
       if( WC.sheetName == 1 )
       { sheet.getRange(NotationRange).setValue(year+'week'+sheetName);
       }
    }
  )
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    修改点:

    • new RegExp 没有 sheetName 的属性。 Ref 这样,undefined 总是被返回。我认为这可能是您的问题的原因。
    • 在你的情况下,我认为includes 可以用于 if 语句。

    当以上几点反映到你的脚本中时,它变成如下。

    修改后的脚本:

    function UpdateCell() {
      const NotationRange = "B2:D5"
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const sheets = ss.getSheets();
      const year = 2020
      const checkDailyWord = ".";
      const checkWeekWord = "week";
      sheets.forEach(sheet => {
        const sheetName = sheet.getName();
        if (sheetName.includes(checkDailyWord) && !sheetName.includes(checkWeekWord)) {
          sheet.getRange(NotationRange).setValue(year+'.'+sheetName);
        } else if (!sheetName.includes(checkDailyWord) && sheetName.includes(checkWeekWord)) {
          sheet.getRange(NotationRange).setValue(year+'week'+sheetName);
        }
      });
    }
    
    • 运行此修改后的脚本时,在您的示例表名称中,01.01,01.02,12.31week01,week02,week53 分别运行 sheet.getRange(NotationRange).setValue(year+'.'+sheetName)sheet.getRange(NotationRange).setValue(year+'week'+sheetName)

    注意:

    • 在此修改后的脚本中,根据您的示例工作表名称,它假定工作表名称包含 week. 的工作表未使用。

    参考:

    【讨论】:

      猜你喜欢
      • 2020-06-11
      • 2020-07-20
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多