typescript 如何更改此Excel Office脚本以清除“B4:B120”区域?

ozxc1zmp  于 2023-02-17  发布在  TypeScript
关注(0)|答案(1)|浏览(128)

我有一个脚本,除了清除B4:B120区域"//清除"保证金更新"列。"部分(由于某种原因,该部分显示为灰色)外,其余部分都可以正常工作:

function main(workbook: ExcelScript.Workbook): ReportImages {
  // Recalculate the workbook to ensure all tables and charts are updated.
  workbook.getApplication().calculate(ExcelScript.CalculationType.full);

  // Get the data from the "Target Margins - FHM" table. (name of Excel tab, not name of table)
  let sheet1 = workbook.getWorksheet("Sheet1");
  const table = workbook.getWorksheet('Target Margins - FHM').getTables()[0];
  const rows = table.getRange().getTexts();

  // Get only the Product Type and "Margin Update" columns, then remove the "Total" row.
  const selectColumns = rows.map((row) => {
    return [row[0], row[1]];
  });

  // Delete the "ChartSheet" worksheet if it's present, then recreate it.
  workbook.getWorksheet('ChartSheet')?.delete();
  const chartSheet = workbook.addWorksheet('ChartSheet');

  // Add the selected data to the new worksheet.
  const targetRange = chartSheet.getRange('A1').getResizedRange(selectColumns.length - 1, selectColumns[0].length - 1);
  targetRange.setValues(selectColumns);

   // Get images of the chart and table, then return them for a Power Automate flow.
  const tableImage = table.getRange().getImage();
  return { tableImage };

  // Clear the "Margin Updates" column.
  const targetSheet = workbook.getActiveWorksheet();
  const getRange = targetSheet.getRange("B4:B120");
  getRange.clear(ExcelScript.ClearApplyTo.contents);`

}

// The interface for table and chart images.
interface ReportImages {
  tableImage: string
}

该代码复制A列和B列(构成一个表)中的数据,并通过Power Automate流发送电子邮件。不幸的是,我需要B列的部分清除值(而不是格式或样式),之后此流将不执行。
如果能帮我解决这个问题,我将不胜感激。
谢谢你。
@控制论.游牧者:当我尝试使用Range ("B4:B120").Clear时,我收到
检测到无法访问的代码(7027)
以及
和"找不到名称"范围"(2304)
Office Script Range Clear Error

nue99wik

nue99wik1#

在JavaScript中,函数在return关键字求值后立即退出,这就是为什么它说你的代码不可访问,所以你必须重新构造你的代码,以便在代码末尾返回,所以你可以更新你的代码,看起来像这样:

// Clear the "Margin Updates" column.
const targetSheet = workbook.getActiveWorksheet();
const getRange = targetSheet.getRange("B4:B120");
getRange.clear(ExcelScript.ClearApplyTo.contents);

return { tableImage };

相关问题