Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 触发Google Sheets函数写入单元格_Javascript_Google Sheets - Fatal编程技术网

Javascript 触发Google Sheets函数写入单元格

Javascript 触发Google Sheets函数写入单元格,javascript,google-sheets,Javascript,Google Sheets,我在谷歌表单中有这个功能。目前,我必须通过在字段中键入=loadOutposts()来触发它 我在函数上设置了一个时间触发器,但它不会将任何数据写入我的工作表。因为我没有在函数中声明要写入的工作表和字段。如何让函数将数据写入Sheet2 A2,而不必在该字段中键入=loadOutposts() 谢谢 函数loadOutposts(){ var outposts=新数组(); 变量url=”https://api.eveonline.com/eve/ConquerableStationList.x

我在谷歌表单中有这个功能。目前,我必须通过在字段中键入
=loadOutposts()
来触发它

我在函数上设置了一个时间触发器,但它不会将任何数据写入我的工作表。因为我没有在函数中声明要写入的工作表和字段。如何让函数将数据写入Sheet2 A2,而不必在该字段中键入
=loadOutposts()

谢谢

函数loadOutposts(){
var outposts=新数组();
变量url=”https://api.eveonline.com/eve/ConquerableStationList.xml.aspx";
var参数={method:“get”,有效负载:};
var xmlFeed=UrlFetchApp.fetch(url,参数).getContentText();
var xml=XmlService.parse(xmlFeed);
if(xml){
var rows=xml.getRootElement().getChild(“结果”).getChild(“行集”).getChildren(“行”);
对于(变量i=0;i
由于google sheets的工作方式,您必须直接指定何时运行函数

Google脚本保存在服务器端,因此Google sheets无法使用诸如Excel之类的侦听事件来运行函数

工作表上可以有一个按钮,用于调用在选定单元格中传递的函数,如下所示:

function buttonClick()
{
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheets()[0];
   // Returns the active cell
   var cell = sheet.getActiveCell();
   cell.setValue(loadOutposts);
}
这样,您需要选择要填充的单元格,然后单击按钮


有关详细信息,请参见尝试以下脚本代码:

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);
};
函数loadOutposts(){
var outposts=新数组();
变量url=”https://api.eveonline.com/eve/ConquerableStationList.xml.aspx";
var参数={method:“get”,有效负载:};
var xmlFeed=UrlFetchApp.fetch(url,参数).getContentText();
var xml=XmlService.parse(xmlFeed);
if(xml){
var rows=xml.getRootElement().getChild(“结果”).getChild(“行集”).getChildren(“行”);
对于(变量i=0;i
再次感谢;)工作完美!您可能知道以下问题的答案:当我再次运行该函数时,它现在会用它检索的新数据替换Sheet2上的所有数据。但是,它能否根据stationID和stationTypeID的组合检查新数据中是否有新行,并将新行添加到第2页的顶部?所以它不替换所有数据,只添加新行?
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);
};