学生のすべての情報を含むマスタースプレッドシートを使用します。それぞれの生徒のマークをキャプチャしてGoogleシートに書き込んで、レポートカードを生成するためのUIを作成したいと考えています。スプレッドシートへのデータの読み込みとGoogleスクリプトによる値の読み込み
次のコードを使用して、マスターリストからデータをインポートします。名前は正しくインポートされますが、値を取得できないようですか?私は以前にスクリプトによって修飾された細胞の値を取得する前に、すべての保留中のスプレッドシートの変更を適用するために使用SpreadsheetApp.flush()
/**
* A function that inserts a custom menu when the spreadsheet opens to generate the Report Spreadsheet.
*/
function onOpen() {
var menu = [{name: 'Capture Report Data', functionName: 'setUpProgressReport_'}];
SpreadsheetApp.getActive().addMenu('Progress Report', menu);
}
/**
* A set-up function that creates a Report Sheet based on the class selected
*/
function setUpProgressReport_() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('Report 1');
var ui = SpreadsheetApp.getUi(),
response = ui.prompt(
'Enter Class',
'Please enter the class you would like to enter marks for',
ui.ButtonSet.OK_CANCEL),
selectedClass = response.getResponseText();
//Import names of learners by selected class from Master Sheet
var cell = sheet.getRange("A1");
cell.setFormula('=QUERY(IMPORTRANGE("1Dxjt6W54e7n2F8a2zlRZV0n-VtCoPZTC2oZgeMPd8mE","MasterList!A1:Z2000"),"SELECT Col1, Col2,Col4 WHERE Col4 contains ' + "'" + selectedClass + "'" + ' Order by Col2 asc")');
// Freezes the first row to be used as headings
sheet.setFrozenRows(1);
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var values = SpreadsheetApp.getActiveSheet().getRange(lastRow, lastColumn).getValues();
Browser.msgBox(values[0][22]);
}
[1]スプレッドシートを接続しましたか? [2]「+」「+ selectedClass +」「+」(A)、(B)、(D)が含まれています。 –
問題はデータをインポートすることではなく、スプレッドシート内のデータがわかり、クエリが機能します。私は値にアクセスできません。たとえば、セルA15の値を表示しようとすると "undefined"という値が返されます。私はA15の名前がジョンであることがわかりますが、ジョンです。 –
関連:http://stackoverflow.com/questions/27555729/google-spreadsheet-app-script-will-not-wait-for-results-to-load –