我在Google表格中有此功能。目前,我必须在字段中输入=loadOutposts()
来触发它。
我已在该功能上设置了时间触发器,但它没有向我的工作表写入任何数据。因为我没有在要写入的函数中声明工作表和字段。如何让函数将数据写入Sheet2 A2,而无需在该字段中键入=loadOutposts()
?
THX!
function loadOutposts(){
var outposts= new Array();
var url = "https://api.eveonline.com/eve/ConquerableStationList.xml.aspx";
var parameters = {method : "get", payload : ""};
var xmlFeed = UrlFetchApp.fetch(url, parameters).getContentText();
var xml = XmlService.parse(xmlFeed);
if(xml) {
var rows=xml.getRootElement().getChild("result").getChild("rowset").getChildren("row");
for(var i = 0; i < rows.length; i++) {
outpost=[rows[i].getAttribute("stationID").getValue(),
rows[i].getAttribute("stationName").getValue(),
rows[i].getAttribute("stationTypeID").getValue(),
rows[i].getAttribute("solarSystemID").getValue(),
rows[i].getAttribute("corporationID").getValue(),
rows[i].getAttribute("corporationName").getValue()
]
outposts.push(outpost);
}
}
return outposts;
}
答案 0 :(得分:1)
尝试以下脚本代码:
function loadOutposts(){
var outposts= new Array();
var url = "https://api.eveonline.com/eve/ConquerableStationList.xml.aspx";
var parameters = {method : "get", payload : ""};
var xmlFeed = UrlFetchApp.fetch(url, parameters).getContentText();
var xml = XmlService.parse(xmlFeed);
if(xml) {
var rows=xml.getRootElement().getChild("result").getChild("rowset").getChildren("row");
for(var i = 0; i < rows.length; i++) {
outpost=[rows[i].getAttribute("stationID").getValue(),
rows[i].getAttribute("stationName").getValue(),
rows[i].getAttribute("stationTypeID").getValue(),
rows[i].getAttribute("solarSystemID").getValue(),
rows[i].getAttribute("corporationID").getValue(),
rows[i].getAttribute("corporationName").getValue()
]
outposts.push(outpost);
}
}
//return outposts;
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2').getRange(2,1,outposts.length,outposts[0].length).setValues(outposts);
};
答案 1 :(得分:0)
由于google sheet的工作方式,您必须直接指定何时运行函数。
谷歌脚本是服务器端,因此谷歌工作表无法像Excel一样监听事件来运行功能。
你可以在你的工作表上有一个按钮,它调用一个在所选单元格中传递的函数,如下所示:
function buttonClick()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// Returns the active cell
var cell = sheet.getActiveCell();
cell.setValue(loadOutposts);
}
这样您需要选择要填充的单元格,然后单击按钮。
有关详细信息,请参阅https://developers.google.com/apps-script/reference/spreadsheet/sheet#getactivecell