コードサイドで配列を作成していますが、これをHTMLサービスに戻そうとしています。私はオブジェクトをstringifiyingしていると私はロガーを実行するときに私はそれが正しい情報を送信していることがわかります。しかし、それがHTML側に戻ったとき、私は何を試しても「未定義」または空の配列を見ているだけです。どんな助けもありがとうございます。コードは以下の通りです:問題をGoogle AppsスクリプトのHTMLに戻す
ここではhtml側です。
function editFunction(){
//I start by passing an object over to the code side, based on user input
var userChoice = document.getElementById("userChoice").value;
google.script.run
.editJob(userChoice);
//Code side gathers some information based on user input formats into arrays
//and sends back...theoretically
<?var editData = editJob();?>
var returnedValues =JSON.parse(<?=editData?>);//object parsed
var arrayOfValues = [];
for (var n in returnedValues) {
var thisValue = returnedValues[n];
arrayOfValues.push(thisValue);//object reformatted as an array
}
document.getElementById("instructions").value = arrayOfValues[1];
//desired out put part of the array`
}
これは、コード側である:
function editJob(userChoice){
var ss = SpreadsheetApp.openById('1emoXWjdvVmudPVb-ZvFbvnP-np_hPExvQdY-2tOcgi').getSheetByName("Sheet1");
var jobReference = [];
var job;
//uses user input to gather necessary information and puts into arrays
for (var i = 1; job!=""; i++){
job = ss.getRange(i,27).getValue();
jobReference.push(job);
};
for(var n=1; n<jobReference.length;n++){
if(jobReference[n]==userChoice){
break;
}
};
var returnEdit = [];
for (var int =1; int<28;int++){//update int< for number of column
var value = ss.getRange(n+1,int).getValue();
returnEdit.push(value);
};//final array now formed
var returnStringified = JSON.stringify(returnEdit);
Logger.log(returnStringified);
return returnStringified //stringified results theoretically sent over
}
この行の 'var value = ss.getRange(n + 1、int).getValue();'は何ですか? – Cooper
nは上記のforループによって生成される番号です。コードのその部分は、接続されたスプレッドシートの特定の行にあるすべてのものを収集し、次のforループを介して配列に格納できるようにします。正しい情報(スプレッドシートの正しい行)を収集しています。 –
あなたはjobReference [n] == userChoiceをどうやって知っていますか?多分、nはちょうど過去のjobReference.lengthをインクリメントしています。 – Cooper