質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

0回答

696閲覧

特定のGoogleアカウントでのみ動作しないスクリプト

RACCO

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2020/08/20 11:58

編集2020/08/20 12:06

前提・実現したいこと

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アカウントの設定によって, 動作しないコマンドが
含まれてしまっているのではないかと考えていますが, 特定できません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2020/09/11 08:51

3 つ以上あるアカウントのうち 1 つ、ですか? それとも 2 つのうち 1 つですか? 初回実行時に許可を求められましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問