typescript 如何在excel中使用powerautomate中的filecontent添加完整图像

njthzxwz  于 2023-06-30  发布在  TypeScript
关注(0)|答案(2)|浏览(166)

我有一个微软的形式,让用户回答一些问题,并上传图片。所有的响应将被保存到一个Excel表格与电力自动化流程。这些答案将保存为字符串,指向OneDrive的图片URL也将保存到Excel表中。
好吧,很多人都问过如何使用该URL将图片插入Excel的问题,但到目前为止还没有解决方案。微软的标准答案似乎不起作用-每当URL指向OneDrive/SharePoint时都会出现获取错误(参考此link
我从另一个Angular 问同样的问题。我可以在电力自动化流程中得到文件内容。当我下载文件内容并检查它时,它具有如下数据结构(出于安全原因,这不是完整的文件内容):
{"statusCode ":200," header ":{"Pragma":"no-cache "," x-ms-request-id ":" 0f368276 - 7f62 - 4daa-82a7 - 98f5fda","Timing-Allow-Origin":"*"," x-ms-apihub-cached-response ":" false","Accept-Ranges":"bytes "," Cache-Control ":" no-cache","Date":"2021年10月11日星期一09:二十一:21 GMT "," ETag ":""{D2E67548 - 99EE-4BA3-BAB3},4 "","位置":"www.example.com "," X-AspNet-Version ":“4.0.30319”,“X-Powered-By”:" ASP.NET"、" Content-Length":" 137453","内容-处置":“附件; https://flow-apim-msmanaged-na-centralus-01.azure-apim.net/apim/onedriveforbusiness/a47f3c2699aa4df70f3614572a9/datasets/default/files/01YEFL272IOXTNF.../content?inferContentType=true
据我所知,在"body":{"$content-type ":" image/jpeg ","$content ":之后的字符串,从/9j/4UVORX开始直到...==是该图像的base64字符串,逻辑上可以传递给OfficeScript并调用Worksheet. AddImage API将完整图片直接插入Excel工作表作为图像。
如果我把文件内容从power automatic flow传递到OfficeScript,有没有人知道如何使用OfficeScript提取base64字符串?
=附加组件=
经过一些研究,我设法使用json函数从文件内容中提取出正确的字符串:

json(outputs('Get_file_content')?['body']?['$content'])

但是,它会提示错误:操作“编写”失败...

啊......没办法了......

aydmsdu9

aydmsdu91#

这个流程为我工作:

Parse JSON操作中的Content表达式如下所示:

first(json(outputs('Get_response_details')?['body/r926aef8d3cf24b569e10513f3d540e0a']))

获取随表单上传的文件的信息。实际的表达式可能会因表单而异。您只需要将正确的表单响应字段插入到first(json( ))中:

Parse JSON操作中使用的Schema是:

{
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "link": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "type": {},
        "size": {
            "type": "integer"
        },
        "referenceId": {
            "type": "string"
        },
        "driveId": {
            "type": "string"
        },
        "status": {
            "type": "integer"
        },
        "uploadSessionUrl": {}
    }
}

用于传入Run script操作的base64ImageString表达式为:

base64(outputs('Get_file_content')?['body'])

最后,如果你对我在这里使用的脚本感兴趣:

function main(workbook: ExcelScript.Workbook, sheetName: string, address: string, base64ImageString: string) {
  let sheet = workbook.getWorksheet(sheetName);
  let range = sheet.getRange(address);
  let image = sheet.addImage(base64ImageString);
  image.setTop(range.getTop());
  image.setLeft(range.getLeft());
}
p1iqtdky

p1iqtdky2#

我试图做一些像上面的工作示例中所做的事情。
我总是遇到这种情况:* “我们无法运行脚本。请重试。\n运行时错误:第3行:无法读取undefined的属性(阅读'getRange')\r\nclientRequestId:186 e7 c 09 - 69 ad-4356-bf 42 - 23863 dfeb 441”,“日志”:[]*
如果我去掉关于范围的部分,我得到:* “我们无法运行脚本。请重试。\n运行时错误:第4行:无法读取undefined的属性(阅读“addImage”)\r\nclientRequestId:00 b51 c59 - 0 d 6 f-4c 33-a35 c-4 b2364 a82 f71”,“日志”:[]*
我只是复制/粘贴脚本:函数main(工作簿:ExcelScript.工作簿,工作表名称:字符串,地址:string,base64ImageString:string){ let sheet = workbook.getWorksheet(sheetName);
int max. add(int max. add);
}
Image of the script itself below
Image of the Run a Script step in the flow

相关问题