對于網路應用程式,我使用:
function doGet(e) {
const lock = LockService.getDocumentLock();
if (lock.tryLock(350000)) {
try {
var ssId = e.parameter.spreadsheetId;
if (!ssId) return ContentService.createTextOutput("No spreadsheet ID.");
var first_sheet = SpreadsheetApp.openById(ssId);
var first_sheet_page = first_sheet.getSheetByName('test');
var second_sheet = SpreadsheetApp.openById('1qv-snObrAouKS3UdVYh8Dh34l_WqvF3O3eLw_57ZgSI');
var second_sheet_page = second_sheet.getSheetByName('test');
var r = 1;
while (second_sheet_page.getRange(r, 3).getValue()) {
r ;
}
second_sheet_page.getRange(r, 3).setValue(first_sheet_page.getRange(1, 1).getValue());
} catch (e) {
return ContentService.createTextOutput(e.message);
} finally {
lock.releaseLock();
return ContentService.createTextOutput("Done");
}
} else {
return ContentService.createTextOutput("Timeout");
}
}
要激活我使用的網路應用程式:
function vantagem() {
const srcSpreadsheetId = '1qv-snObrAouKS3UdVYh8Dh34l_WqvF3O3eLw_57ZgSI';
const webAppsUrl = "https://script.google.com/macros/s/AKfycbztVyl14tP_Hm4rUdBpl7aiwEHZQP9A7CR67CHtnjMLZG2vCY87/exec";
const res = UrlFetchApp.fetch(webAppsUrl "?spreadsheetId=" srcSpreadsheetId);
console.log(res.getContentText());
}
當我單擊運行代碼時,Web 應用程式未激活。
但是,當我將 URLhttps://script.google.com/macros/s/###/exec?spreadsheetId=@@@@@@@@@@@@@直接粘貼到瀏覽器中并按 ENTER 時,會Done出現顯示 Web 應用程式已激活的訊息。
通過腳本未激活但通過瀏覽器運行正常的情況是什么?
我的電子表格有兩個腳本,Web App并且Send to Web App:

腳本執行頁面上顯示的內容console.log(res.getContentText())是:
Output register too large. Output truncation.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=300, initial-scale=1" name="viewport">
<meta name="google-site-verification" content="LrdTUW9psUAMbh4Ia074-BPEVmcpBxF6Gwf0MSgQXZs">
<title>Sign in - Google Accounts</title>
<style>
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: url(//fonts.gstatic.com/s/opensans/v15/mem5YaGs126MiZpBA-UN_r8OUuhs.ttf) format('truetype');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: url(//fonts.gstatic.com/s/opensans/v15/mem8YaGs126MiZpBA-UFVZ0e.ttf) format('truetype');
}
</style>
<style>
h1, h2 {
-webkit-animation-duration: 0.1s;
-webkit-animation-name: fontfix;
-webkit-animation-iteration-count: 1;
-webkit-animation-timing-function: linear;
-webkit-animation-delay: 0;
}
@-webkit-keyframes fontfix {
from {
opacity: 1;
}
to {
opacity: 1;
}
}
</style>
<style>
html, body {
font-family: Arial, sans-serif;
background: #fff;
margin: 0;
padding: 0;
border: 0;
position: absolute;
height: 100%;
min-width: 100%;
font-size: 13px;
color: #404040;
direction: ltr;
-webkit-text-size-adjust: none;
}
button,
input[type=button],
input[type=submit] {
font-family: Arial, sans-serif;
font-size: 13px;
}
a,
a:hover,
a:visited {
color: #427fed;
cursor: pointer;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
h1 {
font-size: 20px;
color: #262626;
margin: 0 0 15px;
font-weight: normal;
}
h2 {
font-size: 14px;
color: #262626;
margin: 0 0 15px;
font-weight: bold;
}
input[type=email],
input[type=number],
input[type=password],
input[type=tel],
input[type=text],
input[type=url] {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
display: inline-block;
height: 36px;
padding: 0 8px;
margin: 0;
background: #fff;
border: 1px solid #d9d9d9;
border-top: 1px solid #c0c0c0;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
-moz-border-radius: 1px;
-webkit-border-radius: 1px;
border-radius: 1px;
font-size: 15px;
color: #404040;
}
input[type=email]:hover,
input[type=number]:hover,
input[type=password]:hover,
input[type=tel]:hover,
input[type=text]:hover,
input[type=url]:hover {
border: 1px solid #b9b9b9;
border-top: 1px solid #a0a0a0;
-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
}
input[type=email]:focus,
input[type=number]:focus,
input[type=password]:focus,
input[type=tel]:focus,
input[type=text]:focus,
input[type=url]:focus {
outline: none;
border: 1px solid #4d90fe;
-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.3);
}
input[type=checkbox],
input[type=radio] {
-webkit-appearance: none;
display: inline-block;
width: 13px;
height: 13px;
margin: 0;
cursor: pointer;
vertical-align: bottom;
background: #fff;
border: 1px solid #c6c6c6;
-moz-border-radius: 1px;
-webkit-border-radius: 1px;
border-radius: 1px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
position: relative;
}
input[type=checkbox]:active,
input[type=radio]:active {
background: #ebebeb;
}
input[type=checkbox]:hover {
border-color: #c6c6c6;
-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
}
input[type=radio] {
-moz-border-radius: 1em;
-webkit-border-radius: 1em;
border-radius: 1em;
width: 15px;
height: 15px;
}
input[type=checkbox]:checked,
input[type=radio]:checked {
background: #fff;
}
input[type=radio]:checked::after {
content: '';
display: block;
position: relative;
top: 3px;
left: 3px;
width: 7px;
height: 7px;
background: #666;
-moz-border-radius: 1em;
-webkit-border-radius: 1em;
border-radius: 1em;
}
input[type=checkbox]:checked::after {
content: url(https://ssl.gstatic.com/ui/v1/menu/checkmark.png);
display: block;
position: absolute;
top: -6px;
left: -5px;
}
input[type=checkbox]:focus {
outline: none;
border-color: #4d90fe;
}
.stacked-label {
display: block;
font-weight: bold;
margin: .5em 0;
}
.hidden-label {
position: absolute !important;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
height: 0px;
width: 0px;
overflow: hidden;
visibility: hidden;
}
input[type=checkbox].form-error,
input[type=email].form-error,
input[type=number].form-error,
input[type=password].form-error,
input[type=text].form-error,
input[type=tel].form-error,
input[type=url].form-error {
border: 1px solid #dd4b39;
}
.error-msg {
margin: .5em 0;
display: block;
color: #dd4b39;
line-height: 17px;
}
.help-link {
background: #dd4b39;
padding: 0 5px;
color: #fff;
font-weight: bold;
display: inline-block;
-moz-border-radius: 1em;
-webkit-border-radius: 1em;
border-radius: 1em;
text-decoration: none;
position: relative;
top: 0px;
}
.help-link:visited {
color: #fff;
}
.help-link:hover {
color: #fff;
background: #c03523;
text-decoration: none;
}
.help-link:active {
opacity: 1;
background: #ae2817;
}
.wrapper {
position: relative;
min-height: 100%;
}
.content {
padding: 0 44px;
}
.main {
padding-bottom: 100px;
}
/* For modern browsers */
.clearfix:before,
.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
/* For IE 6/7 (trigger hasLayout) */
.clearfix {
zoom:1;
}
.google-header-bar {
height: 71px;
border-bottom: 1px solid #e5e5e5;
overflow: hidden;
}
.header .logo {
background-image: url(https://ssl.gstatic.com/accounts/ui/logo_1x.png);
background-size: 116px 38px;
background-repeat: no-repeat;
margin: 17px 0 0;
float: left;
height: 38px;
width: 116px;
}
.header .logo-w {
background-image: url(https://ssl.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_112x36dp.png);
background-size: 112px 36px;
margin: 21px 0 0;
}
.header .secondary-link {
margin: 28px 0 0;
float: right;
}
.header .secondary-link a {
font-weight: normal;
}
.google-header-bar.centered {
border: 0;
height: 108px;
}
.google-header-bar.centered .header .logo {
float: none;
margin: 40px auto 30px;
display: block;
}
.google-header-bar.centered .header .secondary-link {
display: none
}
.google-footer-bar {
position: absolute;
bottom: 0;
height: 35px;
width: 100%;
border-top: 1px solid #e5e5e5;
overflow: hidden;
}
.footer {
padding-top: 7px;
font-size: .85em;
white-space: nowrap;
line-height: 0;
}
.footer ul {
float: left;
max-width: 80%;
min-height: 16px;
padding: 0;
}
.footer ul li {
color: #737373;
display: inline;
padding: 0;
padding-right: 1.5em;
}
.footer a {
color: #737373;
}
.lang-chooser-wrap {
float: right;
display: inline;
}
.lang-chooser-wrap img {
vertical-align: top;
}
.lang-chooser {
font-size: 13px;
height: 24px;
line-height: 24px;
}
.lang-chooser option {
font-size: 13px;
line-height: 24px;
}
.hidden {
height: 0px;
width: 0px;
overflow: hidden;
visibility: hidden;
display: none !important;
}
.banner {
text-align: center;
}
.card {
background-color: #f7f7f7;
padding: 20px 25px 30px;
margin: 0 auto 25px;
width: 304px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
-moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
}
.card > *:first-child {
margin-top: 0;
}
.rc-button,
.rc-button:visited {
display: inline-block;
min-width: 46px;
text-align: center;
color:
uj5u.com熱心網友回復:
根據您的問題,我確認如下。
從
But when I paste the URL https://script.google.com/macros/s/###/exec?spreadsheetId=@@@@@@@@@@@@@ directly into the browser and press ENTER, the message Done appears showing that the Web App is activated.,認為您的 Web 應用程式已正確部署。從 開始
When I click to run the code, the Web App is not activated.,當您Spreadsheet1()通過單擊分配給函式的按鈕運行腳本時,Web 應用程式的腳本不會運行。
從上述情況,我想提出以下確認。
請再次確認您的 Web 應用程式的設定。根據您的情況,我認為以下設定可能是合適的。
Execute as是Me。Who has access是Anyone。如果
Who has access不是Anyone,則需要使用訪問令牌訪問 Web 應用程式。在這種情況下,當您在登錄 Google 下通過瀏覽器訪問 Web Apps 時,會運行 Web Apps 的腳本。另一方面,當您運行腳本時,Web Apps 的腳本不會運行。因為需要使用訪問令牌。我很擔心這個。
在您確認上述設定后,請再次將您的最新腳本和設定反映到您的 Web 應用程式中。(以防萬一。)
添加1:
作為附加資訊,當訪問令牌用于客戶端腳本時,它變為如下。
修改后的腳本:
但在這種情況下,請由您作為 Web 應用程式的所有者測驗此腳本。
function vantagem() {
const srcSpreadsheetId = '###';
const webAppsUrl = "https://script.google.com/macros/s/###/exec";
const headers = { authorization: "Bearer " ScriptApp.getOAuthToken() };
const res = UrlFetchApp.fetch(webAppsUrl "?spreadsheetId=" srcSpreadsheetId, { headers });
console.log(res.getContentText());
// DriveApp.getFiles() // This is used for automatically detecting the scope for using Web Apps.
}
添加2:
從 OP 的回復中I found the problem. Instead of Anyone, it has to be Anyone, even anonymous,我了解到您使用的是經典編輯器。
對于經典編輯器
Who has access to the app: Anyone, even anonymous
對于新編輯
Who has access to the app: Anyone
這些都是一樣的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442352.html
標籤:谷歌应用脚本
上一篇:對GoogleApps腳本實施的請求來自Postman,但不適用于javascript
下一篇:從列中獲取資料并將其粘貼到一行中
