Google App ScriptではdoGet関数を設定して、プロジェクトをデプロイし、生成したウェブアプリのURLをクリックすると、doGet関数を実行することができます。
このURLクリックをスクリプトの中で自動化して、自動的にdoGet関数を実行する処理をしたい場合があります。
そんなときに、指定したURLの取得をリクエストしてくれる「UrlFetchApp.fetch」メソッドを使えば、ウェブアプリのURLをクリックしたのと同じで、doGetのプログラムを実行できるのでしょうか?
結論
最初に結論から言うと「できない」です。
URLをクリックしてスクリプトを実行するには、タブを開きプログラムが完了するまでそのタブを開き続けなければいけないようです。
「UrlFetchApp.fetch」ではその処理ができません。
コード
試しにdoGetを作成し、デプロイしたURLを使って以下のコードを実行しました。
function fetch(){
let url = "ウェブアプリのURL";
let res = UrlFetchApp.fetch(url);
console.log(res.getResponseCode());
}
この実行結果、res.getResponseCode()の結果は「200」となります。つまり、リクエストは正常に通っているということです。
200
なおfetch結果の中身は以下のようになっています。
function fetch(){
let url = "https://script.google.com/macros/s/AKfycbzuKcwAyahlF4OdCsqPaBK1P3nmMdnnQF0fSS6Mg2Cj3c2YhGVtwZP3-HB54gn1urcDpA/exec";
let res = UrlFetchApp.fetch(url);
console.log(res);
console.log(res.getContent);
console.log(res.getContentText);
}
↓ 実行結果
{ toString: [Function],
getResponseCode: [Function],
getContent: [Function],
getHeaders: [Function],
getAllHeaders: [Function],
getContentText: [Function],
getAs: [Function],
getBlob: [Function] }
Logging output too large. Truncating output. [ 60,
33,
100,
111,
99,
116,
121,
112,
101,
32,
104,
116,
109,
108,
62,
60,
104,
116,
109,
108,
32,
108,
97,
110,
103,
61,
34,
......
Logging output too large. Truncating output. <!doctype html><html lang="en-US" dir="ltr"><head><base href="https://accounts.google.com/v3/signin/"><link ref="preconnect" href="//www.gstatic.com"><meta name="referrer" content="origin"><link rel="canonical" href="https://accounts.google.com/v3/signin/rejected"><style data-href="https://www.gstatic.com/_/mss/boq-identity/_/ss/k=boq-identity.AccountsSignInUi.f_BUNANi_fU.L.X.O/am=HwQm0ZljASgAEIIGAAgAFAAAAAAAAAAAABlgEgI/d=1/ed=1/rs=AOaEmlHeQKPjyoyICifYfO82Y7TS7UiLmg/m=rejectedview,_b,_tp" nonce="9JAmKsJdC3femIqdJbP4Gw">c-wiz{contain:style}c-wiz>c-data{display:none}c-wiz.rETSD{contain:none}c-wiz.Ubi8Z{contain:layout style}@-webkit-keyframes quantumWizBoxInkSpread{0%{-webkit-transform:translate(-50%,-50%) scale(0.2);-webkit-transform:translate(-50%,-50%) scale(0.2);-ms-transform:translate(-50%,-50%) scale(0.2);-o-transform:translate(-50%,-50%) scale(0.2);transform:translate(-50%,-50%) scale(0.2)}to{-webkit-transform:translate(-50%,-50%) scale(2.2);-webkit-transform:translate(-50%,-50%) scale(2.2);-ms-transform:translate(-50%,-50%) scale(2.2);-o-transform:translate(-50%,-50%) scale(2.2);transform:translate(-50%,-50%) scale(2.2)}}@keyframes quantumWizBoxInkSpread{0%{-webkit-transform:translate(-50%,-50%) scale(0.2);-webkit-transform:translate(-50%,-50%) scale(0.2);-ms-transform:translate(-50%,-50%) scale(0.2);-o-transform:translate(-50%,-50%) scale(0.2);transform:translate(-50%,-50%) scale(0.2)}to{-webkit-transform:translate(-50%,-50%) scale(2.2);-webkit-transform:translate(-50%,-50%) scale(2.2);-ms-transform:translate(-50%,-50%) scale(2.2);-o-transform:translate(-50%,-50%) scale(2.2);transform:translate(-50%,-50%) scale(2.2)}}@-webkit-keyframes quantumWizIconFocusPulse{0%{-webkit-transform:translate(-50%,-50%) scale(1.5);-webkit-transform:translate(-50%,-50%) scale(1.5);-ms-transform:translate(-50%,-50%) scale(1.5);-o-transform:translate(-50%,-50%) scale(1.5);transform:translate(-50%,-50%) scale(1.5);opacity:0}to{-webkit-transform:translate(-50%,-50%) scale(2);-webkit-transform:translate(-50%,-50%) scale(2);-ms-transform:translate(-50%,-50%) scale(2);-o-transform:translate(-50%,-50%) scale(2);transform:translate(-50%,-50%) scale(2);opacity:1}}@keyframes quantumWizIconFocusPulse{0%{-webkit-transform:translate(-50%,-50%) scale(1.5);-webkit-transform:translate(-50%,-50%) scale(1.5);-ms-transform:translate(-50%,-50%) scale(1.5);-o-transform:translate(-50%,-50%) scale(1.5);transform:translate(-50%,-50%) scale(1.5);opacity:0}to{-webkit-transform:translate(-50%,-50%) scale(2);-webkit-transform:translate(-50%,-50%) scale(2);-ms-transform:translate(-50%,-50%) scale(2);-o-transform:translate(-50%,-50%) scale(2);transform:translate(-50%,-50%) scale(2);opacity:1}}@-webkit-keyframes quantumWizRadialInkSpread{0%{-webkit-transform:scale(1.5);-webkit-transform:scale(1.5);-ms-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5);opacity:0}to{-webkit-transform:scale(2.5);-webkit-transform:scale(2.5);-ms-transform:scale(2.5);-o-transform:scale(2.5);transform:scale(2.5);opacity:1}}@keyframes quantumWizRadialInkSpread{0%{-webkit-transform:scale(1.5);-webkit-transform:scale(1.5);-ms-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5);opacity:0}to{-webkit-transform:scale(2.5);-webkit-transform:scale(2.5);-ms-transform:scale(2.5);-o-transform:scale(2.5);transform:scale(2.5);opacity:1}}@-webkit-keyframes quantumWizRadialInkFocusPulse{0%{-webkit-transform:scale(2);-webkit-transform:scale(2);-ms-transform:scale(2);-o-transform:scale(2);transform:scale(2);opacity:0}to{-webkit-transform:scale(2.5);-webkit-transform:scale(2.5);-ms-transform:scale(2.5);-o-transform:scale(2.5);transform:scale(2.5);opacity:1}}@keyframes quantumWizRadialInkFocusPulse{0%{-webkit-transform:scale(2);-webkit-transform:scale(2);-ms-transform:scale(2);-o-transform:scale(2);transform:scale(2);opacity:0}to{-webkit-transform:scale(2.5);-webkit-transform:scale(2.5);-ms-transform:scale(2.5);-o-transform:scale(2.5);transform:scale(2.5);opacity:1}}.JnOM6e{background-color:transparent;border:none;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;font-size:14px;height:36px;letter-spacing:.15px;line-height:34px;padding:0 24px;position:relative;text-align:center}.JnOM6e:focus-visible{outline:none;position:relative}.JnOM6e:focus-visible::after{border:2px solid rgb(24,90,188);border-radius:6px;bottom:-4px;-webkit-box-shadow:0 0 0 2px rgb(232,240,254);box-shadow:0 0 0 2px rgb(232,240,254);content:"";left:-4px;position:absolute;right:-4px;top:-4px}.rDisVe:focus:not(:focus-visible),.GjFdVe:focus:not(:focus-visible){-webkit-box-shadow:0 1px 1px 0 rgba(66,133,244,.3),0 1px 3px 1px rgba(66,133,244,.15);box-shadow:0 1px 1px 0 rgba(66,133,244,.3),0 1px 3px 1px rgba(66,133,244,.15)}.rDisVe:hover:not(:focus-visible),.GjFdVe:hover:not(:focus-visible){-webkit-box-shadow:0 1px 1px 0 rgba(66,133,244,.45),0 1px 3px 1px rgba(66,133,244,.3);box-shadow:0 1px 1px 0 rgba(66,133,244,.45),0 1px 3px 1px rgba(66,133,244,.3)}.JnOM6e:disabled{pointer-events:none}.JnOM6e:hover{cursor:pointer}.JnOM6e.kTeh9{line-height:36px;text-decoration:none}.JnOM6e.eLNT1d{display:none}.rDisVe{background-color:rgb(26,115,232);color:#fff}.rDisVe:disabled{background-color:rgb(232,234,237);color:rgb(154,160,166)}.rDisVe:focus,.rDisVe:hover{background-color:rgb(24,90,188)}.GjFdVe{border:1px solid rgb(218,220,224);color:rgb(26,115,232)}.GjFdVe:disabled{color:rgb(189,193,198)}.GjFdVe:active{background-color:rgb(174,203,250);color:rgb(23,78,166)}.GjFdVe:focus{background-color:rgb(232,240,254);border-color:rgb(24,90,188);color:rgb(23,78,166)}.GjFdVe:hover{background-color:rgb(232,240,254);color:rgb(23,78,166)}.KXbQ4b{color:rgb(26,115,232);min-width:0;padding-left:8px;padding-right:8px}.KXbQ4b:disabled{color:rgb(189,193,198)}.KXbQ4b:active,.KXbQ4b:hover{color:rgb(24,90,188)}.KXbQ4b:active{background-color:rgba(26,115,232,.12)}.KXbQ4b:focus,.KXbQ4b:hover{background-color:rgba(26,115,232,.04)}.hZUije{border:0}.hZUije.WS4XDd{max-height:1.3333em;padding:0 2px;vertical-align:middle;width:auto}.kHluYc{border:0;-o-object-fit:contain;object-fit:contain}.kHluYc.WS4XDd{max-height:1.3333em;padding:0 2px;vertical-align:middle;width:auto}.aN1Vld{margin:16px 0;outline:none}.aN1Vld+.aN1Vld{margin-top:24px}.aN1Vld:first-child{margin-top:0}.aN1Vld:last-child{margin-bottom:0}.fegW5d{border-radius:8px;padding:16px}.fegW5d>:first-child{margin-top:0}.fegW5d>:last-child{margin-bottom:0}.fegW5d .cySqRb,.fegW5d .yOnVIb{color:rgb(32,33,36)}.fegW5d.YFdWic .yOnVIb{color:rgb(95,99,104);margin-top:4px;padding:0}.fegW5d.YFdWic .wSQNd,.fegW5d.YFdWic .yOnVIb{margin-left:64px;width:calc(100% - 64px)}.fegW5d.YFdWic:not(.S7S4N) .wSQNd{margin-left:0;width:0}.fegW5d:not(.S7S4N)>.yOnVIb{margin-top:0}.fegW5d.sj692e{background:rgb(232,240,254)}.fegW5d.Xq8bDe{background:rgb(252,232,230)}.fegW5d.rNe0id{background:rgb(254,247,224)}.fegW5d.YFdWic{border:1px solid rgb(218,220,224);min-height:80px;position:relative}.fegW5d:not(.S7S4N){display:-webkit-box;display:-webkit-flex;display:flex}.aN1Vld.eLNT1d{display:none}.aN1Vld.RDPZE{opacity:.5;pointer-events:none}.aN1Vld.RDPZE .aN1Vld.RDPZE{opacity:1}.wlrzMe{border:1px solid rgb(218,220,224);border-radius:8px;padding:16px}.wlrzMe .EEiyWe{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;margin-top:16px}.wlrzMe .EEiyWe .GjFdVe{margin-bottom:0;margin-top:0}.wSQNd:empty{display:none}.wSQNd>:first-child{margin-top:0;padding-top:0}.wSQNd>:last-child{margin-bottom:0;padding-bottom:0}.cySqRb{-webkit-box-align:center;-webkit-align-items:center;align-items:center;color:rgb(32,33,36);display:-webkit-box;display:-webkit-flex;display:flex;font-size:16px;font-weight:500;letter-spacing:.1px;line-height:1.4286;margin-bottom:0;margin-top:0;padding:0}.zlrrr{color:rgb(95,99,104);-webkit-flex-shrink:0;flex-shrink:0;height:20px;margin-right:16px;width:20px}.zlrrr .GxLRef{height:100%;width:100%}.fegW5d .zlrrr{margin-top:0}.fegW5d.sj692e .zlrrr{color:rgb(25,103,210)}.fegW5d.Xq8bDe .zlrrr{color:rgb(197,34,31)}.fegW5d.rNe0id .zlrrr{color:rgb(234,134,0)}.fegW5d.YFdWic .zlrrr{height:48px;left
対処法
ウェブアプリのURLをクリックするのではなく、あくまでスクリプトの中でデプロイしたウェブアプリのURLを実行する方法はあります。
それは、モーダルを作成し、その中にaタグでリンクURLを埋め込み、JavaScriptでクリックする、おまけに自動でそのモーダルを閉じるという方法です。
詳細については下記をご参考ください。