2

家の近くにある 2 つの河川ゲージからデータを取得するためのスプレッドシートを作成して、私たちを通過する水位との関係を追跡してみました (これは古い工場です)。

基本的に、シートは完全に機能しますが、スプレッドシートが開いていないときやラップトップを閉じているときは機能しません。私はこれを解決すると思っopenByIdgetSheetByNameいましたが、運がありません。

私が作成したImportXMLコマンドは、シートが開いていないときに N/A を返すだけです。スクリプトは、15 分ごとに時間指定されたトリガーにあります。ImportXML一度に 1 行のコマンドしかないように、セルの内容を値として書き換える基本的なスクリプトがもう 1 つあります。

以下にスクリプトを貼り付けました - あまり雄弁でない場合は申し訳ありませんが、これらは私の最初の試みです!

function fetchData() {

var sheet = SpreadsheetApp.openById("0AgG7jQSg2ljFdGNpbFRjUTA1LXJwdmtPcmxkQnZpUHc").getSheetByName("River Levels");

var bredURL = "http://www.environment-agency.gov.uk/homeandleisure/floods/riverlevels/120743.aspx?stationId=4004";

var belURL = "http://www.environment-agency.gov.uk/homeandleisure/floods/riverlevels/120743.aspx?stationId=4002";

var ssBredLevel = "substring((//div[@class='plain_text']/p)[2],35,4)";

var ssBelLevel = "substring((//div[@class='plain_text']/p)[2],31,4)";

var ssTime = "substring(//div[@class='plain_text']/p[2],34,5)";

var ssDate = "substring(//div[@class='plain_text']/p[2],43,10)";

var commandBredLevel = "ImportXML(\"" + bredURL + "\",\"" + ssBredLevel + "\")";   // build ImportXML() command

var commandBredTime = "ImportXML(\"" + bredURL + "\",\"" + ssTime + "\")";   // build ImportXML() command

var commandBredDate = "ImportXML(\"" + bredURL + "\",\"" + ssDate + "\")";   // build ImportXML() command

var commandBelLevel = "ImportXML(\"" + belURL + "\",\"" + ssBelLevel + "\")";   // build ImportXML() command

var commandBelTime = "ImportXML(\"" + belURL + "\",\"" + ssTime + "\")";   // build ImportXML() command

var commandBelDate = "ImportXML(\"" + belURL + "\",\"" + ssDate + "\")";   // build ImportXML() command

sheet.appendRow(['Bredwardine',' ',' ',' ',' ','Belmont',' ',' ',' ',' ','=now()']); // append row

var lastrow = sheet.getLastRow(); // define last row

var bredLevel = sheet.getRange(lastrow, 2); // define ImportXML cell

var bredTime = sheet.getRange(lastrow, 3); // define ImportXML cell

var bredDate = sheet.getRange(lastrow, 4); // define ImportXML cell

var belLevel = sheet.getRange(lastrow, 7); // define ImportXML cell

var belTime = sheet.getRange(lastrow, 8); // define ImportXML cell

var belDate = sheet.getRange(lastrow, 9); // define ImportXML cell

bredLevel.setFormula(commandBredLevel);

bredTime.setFormula(commandBredTime);

bredDate.setFormula(commandBredDate);

belLevel.setFormula(commandBelLevel);

belTime.setFormula(commandBelTime);

belDate.setFormula(commandBelDate);

writeFormats();


}

function writeRows() {

  var sheet = SpreadsheetApp.openById("0AgG7jQSg2ljFdGNpbFRjUTA1LXJwdmtPcmxkQnZpUHc").getSheetByName("River Levels");
  var range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
  range.setValues(range.getValues());

};

function writeFormats() {

var sheet = SpreadsheetApp.openById("0AgG7jQSg2ljFdGNpbFRjUTA1LXJwdmtPcmxkQnZpUHc").getSheetByName("River Levels");

var lastcol = sheet.getLastColumn(); // define width of sheet

var lastrow = sheet.getLastRow(); // define last row

var penrow = lastrow-1; // define penultimate row

var formatting = sheet.getRange(penrow,1,1,lastcol); // fetch formatting from penultimate row

formatting.copyFormatToRange(sheet,1,lastcol,lastrow,lastrow); // paste formatting to last row

};
4

0 に答える 0