前提・実現したいこと
GASでスプレッドシートのアクティブセルにファイルのリンクを添付するシステムを作っています。
リンクをつけたいセルでファイル添付ボタンを押す
↓
ファイル選択画面になる
↓
ファイルを選んで添付すると, googleドライブにファイルがアップされ,そのリンクがセルに書き込まれる
(ファイルのUnicode絵文字にgoogleドライブ上のファイルのハイパーリンクがつく)
発生している問題・エラーメッセージ
ある特定のGoogleアカウントでのみファイルがアップできない。
ファイル選択画面のポップアップは表示され, ファイル選択でき, 添付コマンドは押せる。
その後, Googleドライブにファイルがアップされない。
そのGoogleアカウントがGoogleドライブへのアクセス権限を持っていることは確認できています。
該当のソースコード
GAS
1コード.gs 2function fileclip() { 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); //アクティブスプレッドシートを取得 4 var rng = ss.getActiveCell(); //アクティブセルを取得 5 var formula = rng.getFormula(); //アクティブセルの数式を取得 6 main() 7} 8 9function main() { 10 var html = HtmlService.createHtmlOutputFromFile("index"); 11 SpreadsheetApp.getUi().showModalDialog(html, 'ファイルを添付します'); 12} 13 14function processForm(formObject) { 15 var file = formObject.myFile; 16 var filename = file.getName() 17 if(filename == ''){ //ファイルを選択せずに添付を押した場合 18 Browser.msgBox("ファイルが選択されませんでした"); 19 } else { //ファイルを選択し添付を押した場合 20 Browser.msgBox("ファイルを添付しました"); 21 var ss = SpreadsheetApp.getActiveSpreadsheet(); //アクティブスプレッドシートを取得 22 var ssid = ss.getId(); 23 var parentFolder = DriveApp.getFileById(ssid).getParents(); 24 var folder_id = parentFolder.next().getId(); 25 var folder = DriveApp.getFolderById(folder_id); 26 var drive_file = folder.createFile(file); 27 var file_url = drive_file.getUrl(); 28 var file_link = '=hyperlink("'+file_url+'",CHAR(HEX2DEC("1F4C4")))' //ハイパーリンクの数式作成 29 var ss_w = SpreadsheetApp.getActiveSpreadsheet(); //アクティブスプレッドシートを取得 30 var rng_w = ss_w.getActiveCell(); //アクティブセルを取得 31 rng_w.setFormula(file_link); //ハイパーリンク記入 32 } 33} 34 35 36index.html 37<!DOCTYPE html> 38<html> 39 <script> 40 function preventFormSubmit() { 41 var forms = document.querySelectorAll('form'); 42 for (var i = 0; i < forms.length; i++) { 43 forms[i].addEventListener('submit', function(event) { 44 event.preventDefault(); 45 }); 46 } 47 } 48 window.addEventListener('load', preventFormSubmit); 49 function readFile(formObject) { 50 google.script.run 51 .processForm(formObject); 52 } 53 </script> 54 <body> 55 <form id="myForm" onsubmit="readFile(this)" enctype="multipart/form-data"> 56 <input name="myFile" type="file" /><br> 57 <br> 58 <button type="submit">添付</button> 59 </form> 60 </body> 61</html>
試したこと
ファイルアップができないGoogleアカウントでブラウザを変えてみました(Google Chrome, IE, firefox)が,アップはできないままです。
ファイルアップができないGoogleアカウントが使っていたPCで,
他のGoogleアカウントでログインして同じ手順を行うとアップができます。
よってPCやブラウザには依存しておらず,
エラー(ファイルアップできない)はGoogleアカウントについてまわる状況です。
Googleアカウントの設定によって, 動作しないコマンドが
含まれてしまっているのではないかと考えていますが, 特定できません。
あなたの回答
tips
プレビュー