実現したいこと
クリック動作で、google.script.runを動かしたい
前提
以下の様なコードを書き、Gasにてデプロイを行います。
そのデプロイしたURLにアクセスすると、すぐにdownloadzipが動いて、
output2.zipがダウンロードされ、
次にgoogle.script.runのgetvbaが動いてgas側の返り値のdataを元に、
element.clickで新たにGoogleドライブのファイルがダウンロードされます。
ダウンロードしたいファイルは2ファイルになります。
function downloadzip(){
var testfile = ("https://drive.google.com/uc?id=xxxxxxxxxxxx");
var zip = new JSZip();
var folderName = 'ここに入ってる';
var folder = zip.folder(folderName);
var karireport = document.getElementById('karireport');
var element = document.createElement('a');
Array.from(karireport.files).forEach((f,i) => {
folder.file(f.name,f)
})
var data2 = "テスト, テスト, テスト\nテスト, テスト, テスト";
var bom = new Uint8Array([0xef, 0xbb, 0xbf]);
var blob = new Blob([bom, data2], { type: "text/csv" });
folder.file('csv.csv',blob);
zip.generateAsync({type:'blob'})
.then((content) => {
saveAs(content,"output2.zip")
})
google.script.run.withSuccessHandler(data => {
testfile = ("https://drive.google.com/uc?id="+data);
element.setAttribute('href',testfile);
document.body.appendChild(element);
element.click();
}).getvba();
};
downloadzip();
発生している問題・エラーメッセージ
先程のコードのdownloadzip();の箇所をコメントアウトした後に再度デプロイして、
html側で書いた以下のダウンロードzipボタンを押すと、
zipファイルはダウンロードされるのですが、
google.script.runのgetvbaの処理後のwithSuccessHandlerが動かずに、
elementclickが反応せず、Googleドライブのファイルがダウンロードされずに悩んでいます。
ダウンロードされるファイルは1ファイルのみになってしまいます。
<button onClick='downloadzip()'>ダウンロードzip</button>
試したこと
①withSuccessHandlerの中にconsole.logを仕込んでもログは何も出力されていませんでした。
②withFailureHandlerを設定した後に、同じくwithFailureHandlerの中にconsole.logを仕込んでもログは何も出力されなかったので、
Success・Failure共に動いていないんだと思います。
③再度downloadzip();のコメントアウトを解除するとダウンロードは2ファイル行われます。
gas側とブラウザ側どちらもエラーは出ていないみたいです。
最下行のdownloadzip();をURLにアクセスして動かすのと、クリックして動かすとで、
google.script.runの挙動が異なるのかが分からず悩んでいます。
宜しくお願いします。

回答1件
あなたの回答
tips
プレビュー