Java:访问ANY模块之外的相对路径(Java: Access relative path outside ANY module)
我有一个由几个模块组成的java项目:
myWebApp - conf //not a java module, just text files - ModuleA -- src -- target -- moduleA.iml -- pom.xml - ModuleB ... - pom.xml - myWebApp.iml - myWebApp.env
我想从一个Class(显然在模块的src文件夹下)访问
myWebApp.env
文件(这是一个java属性文件),如:InputStream is = new FileInputStream(<RelativePathToEnvFile>);
问题是相对路径似乎仅适用于模块源根目录下的子目录,或者使用此处提到的getResource()技巧在类路径内的任何位置工作
在其他所有语言中,我知道我可以做以下事情:
InputStream is = new FileInputStream("../../../../../myWebApp.env");
这不可能在java中吗?
I have a java project that consists of several modules:
myWebApp - conf //not a java module, just text files - ModuleA -- src -- target -- moduleA.iml -- pom.xml - ModuleB ... - pom.xml - myWebApp.iml - myWebApp.env
I want to access
myWebApp.env
file (which is a java properties file) from a Class (which is obviously under a module's src folder), like:InputStream is = new FileInputStream(<RelativePathToEnvFile>);
The problem is that relative paths seem to work only for subdirectories under modules' source root, or anywhere inside the classpath using the getResource() trick as mentioned here
On every other language I know I could do something like:
InputStream is = new FileInputStream("../../../../../myWebApp.env");
Isn't this possible in java?
原文:
最满意答案
你不能使用appendRow做你想要的。 您正在使用:
target_sheet.appendRow(data);
你需要使用
setValues()
target_sheet(start row, start column, number of rows, number of columns).setValues(data);
在您的情况下,如果要覆盖(编辑)现有行,则需要在其中找到包含索引的行,并将该数字用于
start row
参数。var data, dataAs1D,dataFromCol1,ouss, target_sheet, lastRow,rowToEdit; ss = SpreadsheetApp.getActiveSpreadsheet(); target_sheet = ss.getSheetByName('name'); lastRow = target_sheet.getLastRow(); dataFromCol1 = target_sheet.getRange(1,1,lastRow,1).getValues();//Get all col A values dataAs1D = dataFromCol1.toString().split(",");//Convert 2D array to 1D rowToEdit = colorRow;// data = ['one','two','three']; outerArray = [];//Assign empty array to variable name outerArray.push(data); target_sheet.getRange(rowToEdit,1,data[0].length,data.length).setValues(data);
此示例假定您的索引号位于第一列。
You can not use appendRow to do what you want. You are using:
target_sheet.appendRow(data);
You need to use
setValues()
target_sheet(start row, start column, number of rows, number of columns).setValues(data);
In your case, if you want to overwrite (edit) an existing row, then you will need to find the row with the index in it, and use that number for the
start row
parameter.var data, dataAs1D,dataFromCol1,ouss, target_sheet, lastRow,rowToEdit; ss = SpreadsheetApp.getActiveSpreadsheet(); target_sheet = ss.getSheetByName('name'); lastRow = target_sheet.getLastRow(); dataFromCol1 = target_sheet.getRange(1,1,lastRow,1).getValues();//Get all col A values dataAs1D = dataFromCol1.toString().split(",");//Convert 2D array to 1D rowToEdit = colorRow;// data = ['one','two','three']; outerArray = [];//Assign empty array to variable name outerArray.push(data); target_sheet.getRange(rowToEdit,1,data[0].length,data.length).setValues(data);
This example assumes that your index numbers are in column one.
相关问答
更多-
v4 API没有办法问“数据的最后一行是什么”,因为它是API的不同风格,而不是Apps Script API。 您可以通过请求数据并计算从第一个请求行到最后一个返回行的偏移量来推断最后一行。 The v4 API has no way to ask "what is the last row with data", as it's a different style of API than the Apps Script API. You can infer the last row yourself b ...
-
Google脚本会自动将日期添加到Google表格中的列(Google Scripts automatically add date to column in Google Sheets)[2022-05-17]
以下修改如何? 修改点: sh.insertRowAfter(1)表示在1行和2行之间插入一行。 在您的情况下,您可以使用getLastRow()检索最后一行。 getRange("A2").setValue() , getRange("C2").setFormula()和getRange("D2").setFormula()表示将值导入到“A2”,“C2”和“D2” , 分别。 由此,值总是被导入到2行。 如果要将多个值和公式导入到工作表,可以使用setValues()和setFormulas() 。 以 ... -
简短的回答 AFAIK这是不可能的。 说明 另一方面,Google Apps Script官方文档不包含在指南部分,除了自定义菜单和附加对话框,侧边栏,自定义功能以外,没有书面的方式调用附加功能。触发。 Short answer AFAIK it's not possible. Explanation Google Apps Script official documentation doesn't include this on the Guides section, by the other hand, ...
-
我想你的意思是你在一张纸上,你希望能够按下Add-On-> Add-on Name来运行报告。 除非您的脚本是添加商店上可供下载的任何人发布的附加组件,否则您无法执行此操作。 考虑到谷歌目前已经实施的限制 ,你不太可能想要这样做。 相反,您想要创建自定义菜单。 这里有一个例子。 我不打算复制/粘贴他们的样本,因为我会按原样离开它。 但是,从它的声音来看,您可能更喜欢创建基于时间的触发器。 最简单的方法是打开脚本,按“资源” - >“当前项目触发器” - >“单击此处立即添加一个”。 例如,这将允许您设置基于 ...
-
我实际上找到了我的问题的解决方案,虽然我不确定它是否是最有效的。 以下是代码,以防任何人使用: var sheetID = "x"; //link var GDoc = DocumentApp.openByUrl("y"); //link var body = GDoc.getBody(); //google document body body.clear(); //deletes previous doc contents so a new photo directory can be made fu ...
-
你是马蒂斯的幸运儿! 本周早些时候我自己做了这件事,所以我在你的假表上添加了一个完整的工作脚本。 我会在这里添加一份副本以保证完整性。 有任何问题请告诉我:) function populateOverview() { //set basics var ss = SpreadsheetApp.getActiveSpreadsheet(); var viewSheet = ss.getSheetByName('Overview'); var dataLength = 4; //this ...
-
在Google脚本编辑器中按列K过滤数据(Google表格)(Filter data by column K in Google Script Editor (Google Sheets))[2023-11-06]
你可以在这里找到关于排序的文档。 要使用getRange排序选择一个范围,然后像这样排序函数 var range = ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length) // Use the below line instead, if you want to sort whole sheet, not just the newly entered data! // var range = ts.getDataRange() ... -
如何获取行中的所有非空单元格数据 - Google表格脚本编辑器(How to grab all non-empty cell data in row - Google Sheets Script Editor)[2022-01-18]
这对你有用吗? 什么时候有abc | 123 | 987 | efg abc | 123 | 987 | efg abc | 123 | 987 | efg , blah| cat | 654 blah| cat | 654 blah| cat | 654和abc | | 987 | efg abc | | 987 | efg abc | | 987 | efg在第1行,第2行和第3行, myFunction(1) , myFunction(2)和myFunction(3)返回[abc, 123.0, 98 ... -
如何使用Google Script将数据添加到Google表格中的特定行(How to add data to a specific row in Google Sheets using Google Script)[2021-12-26]
你不能使用appendRow做你想要的。 您正在使用: target_sheet.appendRow(data); 你需要使用setValues() target_sheet(start row, start column, number of rows, number of columns).setValues(data); 在您的情况下,如果要覆盖(编辑)现有行,则需要在其中找到包含索引的行,并将该数字用于start row参数。 var data, dataAs1D,dataFromCol1,ou ... -
就在这里。 您可以使用getLastRow() 。 所以你的代码看起来像这样: function appendToRecords() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var reportSheet = ss.getSheetByName("Report"); var recordsSheet = ss.getSheetByName("Records") var reportData = reportSheet.getRang ...