javascript 有没有办法更新JS函数中的Power Automate变量?

6uxekuva  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(103)

我正在使用“在网页上运行JavaScript函数”从网站中提取日和月。问题是JS函数返回的值(作为power automate var存储到DateVar)被Power Automate视为[object Object]。
下面是JS代码。

var dynamicSelector = '[data-test="qc-wrapper"]';
function extractAndConcatenateDate() {
  // Find the elements by the dynamic selector
  var cardElement = document.querySelector(dynamicSelector);

  if (!cardElement) {
    return 'Element not found';
  }

  // Find the elements by their class names or other attributes
  var dateElement = cardElement.querySelector('.sc-ABC1 .sc-XYZ1');
  var monthElement = cardElement.querySelector('.sc-ABC2 .sc-XYZ2');

  // Extract the text content from the elements
  var date = dateElement.textContent;
  var month = monthElement.textContent;

  // Return the concatenated date and month as a string
  return date + month;
}

// Call the function and return the concatenated date and month as a string
return extractAndConcatenateDate();

我需要以文本的形式获取返回值。
因为它是作为一个Object返回的,所以我考虑并尝试了以下方法。
1.使用“Set variable”(设置变量)操作创建新的功率自动变量:tempVar =“tempContent”
1.在JS fn中,添加了一个语句('%tempVar%' = date+month;)希望文本内容将被更新到这个power automate变量。
1.执行“在网页上运行JavaScript函数”。
1.但是tempVar仍然只包含“tempContent”。
到目前为止,我只能看到两个选择:
1.找到一种方法来更新JS函数中的tempVar
1.找到一种方法从返回的[object Object]中获取文本值
我也试过使用JSON.stringify返回,但仍然没有运气!
请使用Power Automate Desktop Flow提供有关此问题的建议。

nbysray5

nbysray51#

“在网页上运行JavaScript函数”操作似乎有一个主要问题。可能和这台Manivest V3有关
它似乎仍然可以操作页面内容,但不能返回值。甚至是像这样简单的事情:

var dm = 'val';
WScript.Echo(dm);

坏了
另一种方法是添加一个UI元素,不管是什么元素。然后使用一个变量,你分配css选择器值,然后使用UI元素的默认值中的变量。
使用“获取网页上元素的详细信息”操作,您可以根据需要提取文本。(将代码复制到PAD流)

WebAutomation.LaunchChrome.AttachToChromeByUrl TabUrl: $'''https://demos.telerik.com/aspnet-core/scheduler''' AttachTimeout: 5 BrowserInstance=> Browser
SET elementSelector TO $'''#scheduler > table > tbody > tr:nth-child(2) > td > div > table > tbody > tr:nth-child(1) > td:nth-child(1) > span'''
WebAutomation.GetDetailsOfElement BrowserInstance: Browser Control: appmask['Web Page \'https://demos.telerik.com/aspnet-core/scheduler\'']['Span \'Today\''] AttributeName: $'''Own Text''' AttributeValue=> AttributeValue
SET Date TO AttributeValue
SET elementSelector TO $'''#scheduler > table > tbody > tr:nth-child(1) > td > div > div > table > tbody > tr > th:nth-child(1)'''
WebAutomation.GetDetailsOfElement BrowserInstance: Browser Control: appmask['Web Page \'https://demos.telerik.com/aspnet-core/scheduler\'']['Span \'Today\''] AttributeName: $'''Own Text''' AttributeValue=> AttributeValue
SET Day TO AttributeValue
Display.ShowMessageDialog.ShowMessage Title: $'''combined''' Message: $'''%Date% - %Day%''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed

它应该看起来像这样:

我不知道你的页面看起来像什么,但我用telerik scheduler demo site(月视图)来解释这个答案。
我添加了一个UI元素,任何元素都可以。

编辑UI元素并翻转文本编辑器开关。然后将默认值设置为变量。

结果是在弹出窗口中显示2个值的弹出窗口。

JavaScript操作不起作用是一个痛苦,但这至少是一种替代方案。

相关问题