Uncaught TypeError: google.script.run.doSomething is not a function
Uncaught TypeError: google.script.run.doSomething is not a function
我正在尝试检查输入名称是否已在 Google Sheet 中。但是,我收到此错误:
Uncaught TypeError: google.script.run.doSomething is not a function.
这是我的 Index.html
文件。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<meta charset="UTF-8">
</head>
<body>
<input type="text" id="meetingTitle" value=""> // Getting value here
<button onclick="checkName()">Check if available</button> //Calling function is is causing the error.
<p id=nameVerification><i>Click the button above to check availability.</i></p>
<script>
function checkName() {
var toPass = document.getElementById("meetingTitle").value;
prompt("toPass " + toPass);
google.script.run.doSomething();
}
function checkNameCS(checkNameSSReturn) {
if (checkNameSSReturn == "") {
document.getElementById('nameVerification').innerHTML = "Already in Use: Please try with another name."
document.getElementById("meetingTitle").value = "";
} else {
document.getElementById("meetingTitle").value = checkNameSSReturn;
document.getElementById('nameVerification').innerHTML = "Meeting name available. Procced."
}
}
function doSomething () {
var nameGiven = document.getElementById("meetingTitle").value;
var nameExists = false;
var nameVerified = false;
var name = nameGiven.toLowerCase();
name = strip(name);
prompt("name " + name);
var spreadsheetId = ''; //Sheet id entered
var rangeName = 'Sheet1';
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (!values) {} else {
for (var row = 0; row < values.length; row++) {
if (name == values[row][0]) {
nameExists = true;
}
}
}
if (nameExists) {
checkNameCS("");
prompt("name2 " + " ");
return;
}
nameVerified = true;
prompt("name2 " + name);
checkNameCS(name);
return;
}
function strip(str) {
return str.replace(/^\s+|\s+$/g, '');
}
</script>
</body>
</html>
我试过根据提示调试它,但没有成功。似乎函数 do something 被正确调用了。但是代码在 google.script.run.doSomething();
之后停止工作。
我查看了 successhandlers 的文档,但他们也没有解决问题。
这个修改怎么样?
你的脚本问题:
google.script.run.doSomething()
的 doSomething()
必须是 Google Apps 脚本。
- 在您的脚本中,
doSomething()
放在 HTML (index.html
) 中,并且包含使用 Google Apps 脚本的方法。当 google.script.run.doSomething()
为 运行 时,无法在 Google Apps 脚本 (code.gs
) 中找到 doSomething()
。这样,就会出现这样的错误。而如果doSomething()
在HTML这边是运行,那么在Sheets.Spreadsheets.Values.get()
也会报错,因为Sheets.Spreadsheets.Values.get()
是高级Google服务的方法Google Apps 脚本。
- 如果放在Google Apps Script (
code.gs
), doSomething()
的脚本中使用的Javascript需要修改
修改后的脚本:
在此修改中,您的脚本分为 Google Apps 脚本 (code.gs
) 和 HTML (index.html
)。 var nameGiven = document.getElementById("meetingTitle").value;
和 checkNameCS(name);
用于 index.html
。
顺便说一下,在您 运行 这个脚本之前,请在高级 Google 服务中启用表格 API。
Google 应用脚本:code.gs
function strip(str) {
return str.replace(/^\s+|\s+$/g, '');
}
function doSomething (nameGiven) {
var nameExists = false;
var nameVerified = false;
var name = nameGiven.toLowerCase();
name = strip(name);
var spreadsheetId = '###'; //Sheet id entered
var rangeName = 'Sheet1';
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (values) {
for (var row = 0; row < values.length; row++) {
if (name == values[row][0]) {
nameExists = true;
}
}
}
if (nameExists) {
return "";
}
nameVerified = true;
return name;
}
HTML: index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<meta charset="UTF-8">
</head>
<body>
<input type="text" id="meetingTitle" value="">
<button onclick="checkName()">Check if available</button>
<p id=nameVerification><i>Click the button above to check availability.</i></p>
<script>
function checkName() {
var toPass = document.getElementById("meetingTitle").value;
prompt("toPass " + toPass);
var nameGiven = document.getElementById("meetingTitle").value; // Added
google.script.run.withSuccessHandler(checkNameCS).doSomething(nameGiven); // Modified
}
function checkNameCS(checkNameSSReturn) {
console.log(checkNameSSReturn)
if (checkNameSSReturn == "") {
document.getElementById('nameVerification').innerHTML = "Already in Use: Please try with another name."
document.getElementById("meetingTitle").value = "";
} else {
document.getElementById("meetingTitle").value = checkNameSSReturn;
document.getElementById('nameVerification').innerHTML = "Meeting name available. Procced."
}
}
</script>
</body>
</html>
参考:
我正在尝试检查输入名称是否已在 Google Sheet 中。但是,我收到此错误:
Uncaught TypeError: google.script.run.doSomething is not a function.
这是我的 Index.html
文件。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<meta charset="UTF-8">
</head>
<body>
<input type="text" id="meetingTitle" value=""> // Getting value here
<button onclick="checkName()">Check if available</button> //Calling function is is causing the error.
<p id=nameVerification><i>Click the button above to check availability.</i></p>
<script>
function checkName() {
var toPass = document.getElementById("meetingTitle").value;
prompt("toPass " + toPass);
google.script.run.doSomething();
}
function checkNameCS(checkNameSSReturn) {
if (checkNameSSReturn == "") {
document.getElementById('nameVerification').innerHTML = "Already in Use: Please try with another name."
document.getElementById("meetingTitle").value = "";
} else {
document.getElementById("meetingTitle").value = checkNameSSReturn;
document.getElementById('nameVerification').innerHTML = "Meeting name available. Procced."
}
}
function doSomething () {
var nameGiven = document.getElementById("meetingTitle").value;
var nameExists = false;
var nameVerified = false;
var name = nameGiven.toLowerCase();
name = strip(name);
prompt("name " + name);
var spreadsheetId = ''; //Sheet id entered
var rangeName = 'Sheet1';
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (!values) {} else {
for (var row = 0; row < values.length; row++) {
if (name == values[row][0]) {
nameExists = true;
}
}
}
if (nameExists) {
checkNameCS("");
prompt("name2 " + " ");
return;
}
nameVerified = true;
prompt("name2 " + name);
checkNameCS(name);
return;
}
function strip(str) {
return str.replace(/^\s+|\s+$/g, '');
}
</script>
</body>
</html>
我试过根据提示调试它,但没有成功。似乎函数 do something 被正确调用了。但是代码在 google.script.run.doSomething();
之后停止工作。
我查看了 successhandlers 的文档,但他们也没有解决问题。
这个修改怎么样?
你的脚本问题:
doSomething()
必须是 Google Apps 脚本。- 在您的脚本中,
doSomething()
放在 HTML (index.html
) 中,并且包含使用 Google Apps 脚本的方法。当google.script.run.doSomething()
为 运行 时,无法在 Google Apps 脚本 (code.gs
) 中找到doSomething()
。这样,就会出现这样的错误。而如果doSomething()
在HTML这边是运行,那么在Sheets.Spreadsheets.Values.get()
也会报错,因为Sheets.Spreadsheets.Values.get()
是高级Google服务的方法Google Apps 脚本。
- 在您的脚本中,
- 如果放在Google Apps Script (
code.gs
),doSomething()
的脚本中使用的Javascript需要修改
google.script.run.doSomething()
的 修改后的脚本:
在此修改中,您的脚本分为 Google Apps 脚本 (code.gs
) 和 HTML (index.html
)。 var nameGiven = document.getElementById("meetingTitle").value;
和 checkNameCS(name);
用于 index.html
。
顺便说一下,在您 运行 这个脚本之前,请在高级 Google 服务中启用表格 API。
Google 应用脚本:code.gs
function strip(str) {
return str.replace(/^\s+|\s+$/g, '');
}
function doSomething (nameGiven) {
var nameExists = false;
var nameVerified = false;
var name = nameGiven.toLowerCase();
name = strip(name);
var spreadsheetId = '###'; //Sheet id entered
var rangeName = 'Sheet1';
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (values) {
for (var row = 0; row < values.length; row++) {
if (name == values[row][0]) {
nameExists = true;
}
}
}
if (nameExists) {
return "";
}
nameVerified = true;
return name;
}
HTML: index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<meta charset="UTF-8">
</head>
<body>
<input type="text" id="meetingTitle" value="">
<button onclick="checkName()">Check if available</button>
<p id=nameVerification><i>Click the button above to check availability.</i></p>
<script>
function checkName() {
var toPass = document.getElementById("meetingTitle").value;
prompt("toPass " + toPass);
var nameGiven = document.getElementById("meetingTitle").value; // Added
google.script.run.withSuccessHandler(checkNameCS).doSomething(nameGiven); // Modified
}
function checkNameCS(checkNameSSReturn) {
console.log(checkNameSSReturn)
if (checkNameSSReturn == "") {
document.getElementById('nameVerification').innerHTML = "Already in Use: Please try with another name."
document.getElementById("meetingTitle").value = "";
} else {
document.getElementById("meetingTitle").value = checkNameSSReturn;
document.getElementById('nameVerification').innerHTML = "Meeting name available. Procced."
}
}
</script>
</body>
</html>