您可以使用 PowerAutomate 和两个 Office 脚本将两个工作簿链接在一起。
您将从使用重复开始。因此,您可以选择希望流程运行的频率(每周、每天等)
设置重复周期后,您必须编写一个处理表数据的办公脚本。您可以使用表的 GetRangeBetweenHeaderAndTotal() 方法来处理表的 dataBodyRange。一旦你有了它,你就可以调整范围的大小来获得你需要的数据。接下来,您需要获取可用于 GetValues 方法的值。GetValues 返回一个无法从 PowerAutomate RunScript 返回的二维数组。因为你不能这样做,但你可以返回一个字符串,你可以通过将二维数组转换为 json 字符串来解决这个问题。你可以看到下面的代码:
function main(workbook: ExcelScript.Workbook): string {
let sh: ExcelScript.Worksheet = workbook.getActiveWorksheet();
//get table
let tbl: ExcelScript.Table = sh.getTable("Table1");
//get table's column count
let tblColumnCount: number = tbl.getColumns().length;
//set number of columns to keep
let columnsToKeep: number = 3;
//set the number of rows to remove
let rowsToRemove: number = 0;
//resize the table range
let tblRange: ExcelScript.Range = tbl.getRangeBetweenHeaderAndTotal().getResizedRange(rowsToRemove,columnsToKeep - tblColumnCount);
//get the table values
let tblRangeValues: string[][] = tblRange.getValues() as string[][];
//create a JSON string
let result: string = JSON.stringify(tblRangeValues);
//return JSON string
return result;
}
创建脚本后,请考虑将其命名为您在 PowerAutomate 中调用它时会记住的名称(我将其命名为 getTableValues)。接下来,在 PowerAutomate 中重复之后,添加一个运行脚本步骤。填写值并选择脚本,如下所示:
接下来,您必须创建一个脚本,该脚本接受从前一个脚本返回的输入并完成最后的步骤。所以脚本必须有一个参数,该参数接受从前一个脚本返回的字符串(我在我的脚本中称之为 tableValues)。在脚本中,您必须解析 json 字符串数组以创建二维数组,调整初始范围的大小,然后设置调整后的范围的值。您可以在下面看到执行此操作的脚本:
function main(workbook: ExcelScript.Workbook, tableValues: string)
{
let sh: ExcelScript.Worksheet = workbook.getWorksheet("Sheet1")
//parses the JSON string to create array
let tableValuesArray: string[][] = JSON.parse(tableValues);
//gets row count from the array
let valuesRowCount: number = tableValuesArray.length - 1
//gets column count from the array
let valuesColumnCount: number = tableValuesArray[0].length - 1
//resizes the range
let rang: ExcelScript.Range = sh.getRange("A1").getResizedRange(valuesRowCount,valuesColumnCount)
//sets the value of the resized range to the array
rang.setValues(tableValuesArray)
}
在 PowerAutomate 中,您必须创建第二个运行脚本步骤。第二步,在你选择脚本后应该会提示你输入一个值(在我的步骤中该值称为tableValues。)在表值输入中,你必须输入动态内容结果值。完成后,您可以保存脚本并进行测试。
需要注意的一点是,第二个脚本不会从以前的运行中删除旧的范围值。这可以通过多种不同的方式来完成。但首选方式可能取决于工作簿的结构。所以我建议在开始的某个地方编写代码来清除第二个脚本中的范围。或者更好的是,将第一个脚本的输出添加到 Excel 表中。每次运行第二个脚本时只需清空表格。