現在、Googleシートの値の配列をHtmlServiceに渡そうとしています。ここでユーザーはオプションを選択し、最終的に.gsに戻しますスクリプト。私は、参照としてこれらの2つのリンクを使用している: 1. Google Documentation 2. Stack Overflow exampleHtmlService:google.script.runがgs関数を認識しない
コードを実行しているとき、私は私のコンソールを見て、このエラーに気づいた: VM3051:4 Uncaught TypeError: google.script.run.withSuccessHandler(...).getVersionArray is not a function
getVersionArray()
が正しく渡されていないことが表示されます。そのgoogle.script.run
コールの残りの部分からこの機能を削除すると、エラーが消えます。
また、リンク2つにつき、そのコードをテンプレートで試したところ、ポップアップするウィンドウがないので、Googleドキュメンテーションのリンクから出発点としてHtmlOutputの例を使用しています。私はSandboxMode宣言の有無にかかわらずコードを試しました。
GSコード:
function bugPieChart() {
getVersionArray();
openDialog();
function getVersionArray() {
var ss = SpreadsheetApp.getActive();
var valuesR = ss.getSheetByName("report").getRange('R1:R').getValues();
var valuesS = ss.getSheetByName("report").getRange('S1:S').getValues();
var versionRSArray = [];
for (var i = 0; i < valuesR.length; i++) {
versionRSArray.push(valuesR[i][0]);
}
for (var i = 0; i < valuesS.length; i++) {
versionRSArray.push(valuesS[i][0]);
}
versionRSArray.sort();
var uniqueArray = [];
uniqueArray.push(versionRSArray[0]);
for (var i in versionRSArray) {
if((uniqueArray[uniqueArray.length-1]!=versionRSArray[i]) && (versionRSArray[i] !== "")) {
uniqueArray.push(versionRSArray[i]);
}
}
return uniqueArray;
}
function openDialog() {
var html = HtmlService.createHtmlOutputFromFile('index');
SpreadsheetApp.getUi().showModalDialog(html, 'Dialog title');
var htmlOutput = html.setSandboxMode(HtmlService.SandboxMode.NATIVE);
return htmlOutput;
}
}
のindex.html:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
$(function() {
google.script.run.withSuccessHandler(buildOptionsList)
.getVersionArray();
});
function buildOptionsList(uniqueArray) {
var list = $('#optionList');
list.empty();
for (var i = 0; i < uniqueArray.length; i++) {
list.append('<option value="' + uniqueArray[i].toLowerCase() + '">' + uniqueArray[i] + '</option>');
}
}
</script>
</head>
<body>
<select id="optionList">
<option>Loading...</option>
</select>
<input type="button" value="Close" onclick="google.script.host.close()" />
</body>
</html>
ああ大丈夫です。まだまだ学べます。私はその括弧を紛失していなかったが、それは一番下にあった。私はbugPieChart()関数の中に2つの他の関数を持っていました。 3つの機能が別々になるように、ブラケットを上に移動しました。回答ありがとうございました。 –