0

Google アプリ スクリプトを使用しており、毎週更新されるスプレッドシートを反復処理したいと考えています。(これが、シート全体を反復できるようにしたい範囲を設定したくない理由です。)

これは可能ですか?はいの場合、これがどのように行われるかの例を挙げていただけますか?

もしこれが良い考えでないなら、なぜですか?

ありがとうございました!

サンプルコード

function doGet(e){   


var ss = SpreadsheetApp.openById('key in here');
var sheet = ss.getSheetByName("Form Responses");
var range = sheet.getRange(1,1);
var dataRange =  range.getValue().toString();

 app.add(app.createHTML("There are " + dataRange + " posts today"))
 return app;

こんな感じですが、範囲だけでなくシート全体が見れるようにしたいです

4

2 に答える 2

0

Henrique Abreu と Srik が正しい答えを提供してくれました - シートの getDataRange はあなたの目的に役立つはずです。

function doGet(e){   
 var sheet = SpreadsheetApp.openById('spreadsheetId').getSheetByName('sheetName');
 var data =  sheet.getDataRange().getValues();;
 ...
}

data は 2 次元配列になりました。反復処理を行ったり、コンテンツを含む最後の列/行を取得したりできます。クラス リファレンスをお読みください: https://developers.google.com/apps-script/reference/spreadsheet/sheet

于 2013-09-25T09:38:29.120 に答える
0

シート自体を反復処理することはできませんが、常に範囲の値を反復処理します。

ただし、固定範囲を使用する必要はありませんが、スクリプトを実行するたびに範囲を計算できます。

これを行うには、getlastcolumn() と getLastRow() を使用できます。この 2 つのメソッドは、コンテンツを含む最後の列または行を返します。

一般的なメソッドは getDataRange() で、データを含む範囲を直接提供します。

スクリプトを実行するたびに、この範囲はコンテンツを含むすべてのセルと列に拡張されます。

Google API ドキュメントの例を見てください:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

// This represents ALL the data
var range = sheet.getDataRange();
var values = range.getValues();

// This logs the spreadsheet in CSV format with a trailing comma
for (var i = 0; i < values.length; i++) {
   var row = "";
   for (var j = 0; j < values[i].length; j++) {
     if (values[i][j]) {
       row = row + values[i][j];
     }
     row = row + ",";
   }
   Logger.log(row);
}

それが役立つことを願っています。

于 2016-11-03T09:39:21.107 に答える