无法设置全局变量
Unable to set a global variable
我想使用一个函数,我传递的参数应该一直设置为全局。我怎样才能做到这一点?这是我的代码:
function ReadExcelfunction($FileName,$SheetName,$RowNum,$ColNum,$Parameter)
{
var $excel = _getExcel($FileName,$SheetName);
var $excelData=$excel.getData();
var $Parameter=$excelData[$RowNum][$ColNum];
//_setGlobal($Parameter,$excelData[$RowNum][$ColNum]) -- Commented
}
现在假设我将参数传递为 -- File sheet 1 1 Name
。
我想要的是:name with the Value is stored as Global value.
之前我使用 _setGlobal($Parameter,$excelData[$RowNum][$ColNum])
解决了这个问题,但是这个 API 已经被删除,现在我需要更改我的脚本。
我正在使用类似于 JavaScript 的 sahi 脚本语言。
一个可能的解决方案是从 sahi 脚本中动态地将值写入现有的 excel sheet 单元格,然后从 [=33= 的相应单元格中检索相同的值] sheet 来自另一个 sahi 脚本。
我用一个简单的文本文件做了类似的事情。
第一个文件
\ script 1
var $str = "Hello World";
var$filePath = "C:\temp\mystring.txt";
_writeToFile($str, $filePath);
第二个文件
\ script 2
var $filePath = "C:\temp\mystring.txt";
var $mystr = _readFile($filePath);
编辑: 扩展答案
--------------------------------
| VariableName | VariableValue |
--------------------------------
| MyVar1 | MyVar1Value |
--------------------------------
| MyVar2 | MyVar2Value |
--------------------------------
| MyVar3 | MyVar3Value |
--------------------------------
创建 Sahi 函数以创建新的 excel sheet:
function _createExcelFile($fileName, $sheetName){
if($sheetName == null || $sheetName == ""){
$sheetName = "Sheet1";
}
_debug("Excel File Name :: " + $fileName);
_debug("Excel File Sheet Name :: " + $sheetName);
var $excelPoi = new Packages.net.sf.sahi.util.ExcelPOI($fileName, $sheetName);
$excelPoi.createNew();
}
此外,您可以参考 Sahi Pro 的 _getExcel($filePath[, $sheetName]) API。您需要进行一些迭代才能完成工作。您可以根据需要读写数据。
注意:我只在最新版本的 Sahi Pro 中尝试过,即 6.1.0。
不需要使用_setGlobal,只需要在函数声明前声明一个var即可。例如,您可以声明一个新数组,然后声明 set/get 值,就像 _setGlobal.
// www.google.com used as start URL
var $globalVariable = new Array();
function SetGlobalVariable(key, newValue) {
$globalVariable[key] = newValue;
}
SetGlobalVariable('inputValue', 'stack overflow');
_setValue(_textbox("q"), $globalVariable['inputValue']);
我想使用一个函数,我传递的参数应该一直设置为全局。我怎样才能做到这一点?这是我的代码:
function ReadExcelfunction($FileName,$SheetName,$RowNum,$ColNum,$Parameter)
{
var $excel = _getExcel($FileName,$SheetName);
var $excelData=$excel.getData();
var $Parameter=$excelData[$RowNum][$ColNum];
//_setGlobal($Parameter,$excelData[$RowNum][$ColNum]) -- Commented
}
现在假设我将参数传递为 -- File sheet 1 1 Name
。
我想要的是:name with the Value is stored as Global value.
之前我使用 _setGlobal($Parameter,$excelData[$RowNum][$ColNum])
解决了这个问题,但是这个 API 已经被删除,现在我需要更改我的脚本。
我正在使用类似于 JavaScript 的 sahi 脚本语言。
一个可能的解决方案是从 sahi 脚本中动态地将值写入现有的 excel sheet 单元格,然后从 [=33= 的相应单元格中检索相同的值] sheet 来自另一个 sahi 脚本。
我用一个简单的文本文件做了类似的事情。
第一个文件
\ script 1
var $str = "Hello World";
var$filePath = "C:\temp\mystring.txt";
_writeToFile($str, $filePath);
第二个文件
\ script 2
var $filePath = "C:\temp\mystring.txt";
var $mystr = _readFile($filePath);
编辑: 扩展答案
--------------------------------
| VariableName | VariableValue |
--------------------------------
| MyVar1 | MyVar1Value |
--------------------------------
| MyVar2 | MyVar2Value |
--------------------------------
| MyVar3 | MyVar3Value |
--------------------------------
创建 Sahi 函数以创建新的 excel sheet:
function _createExcelFile($fileName, $sheetName){
if($sheetName == null || $sheetName == ""){
$sheetName = "Sheet1";
}
_debug("Excel File Name :: " + $fileName);
_debug("Excel File Sheet Name :: " + $sheetName);
var $excelPoi = new Packages.net.sf.sahi.util.ExcelPOI($fileName, $sheetName);
$excelPoi.createNew();
}
此外,您可以参考 Sahi Pro 的 _getExcel($filePath[, $sheetName]) API。您需要进行一些迭代才能完成工作。您可以根据需要读写数据。
注意:我只在最新版本的 Sahi Pro 中尝试过,即 6.1.0。
不需要使用_setGlobal,只需要在函数声明前声明一个var即可。例如,您可以声明一个新数组,然后声明 set/get 值,就像 _setGlobal.
// www.google.com used as start URL
var $globalVariable = new Array();
function SetGlobalVariable(key, newValue) {
$globalVariable[key] = newValue;
}
SetGlobalVariable('inputValue', 'stack overflow');
_setValue(_textbox("q"), $globalVariable['inputValue']);