前提
Googleフォームで送られてきた音源ファイルを、名前を書き換えてドライブに保存するシステムを作っています。
保存する際のファイル名は、フォームの回答から得た情報に書き換えることとします。
実現したいことの例
❶質問1で、名前を収集する
❷同フォームから音源ファイルがアップされると、質問1で得た名前にファイル名が書き換えられてドライブに保存される
発生している問題・エラーメッセージ
エラー Exception: Unexpected error while getting the method or property getFileById on object DriveApp. at myFunction(音源:34:24)
該当のソースコード
ネットから引っ張ってっきたのを書き換えて作ったので若干変なところや不要なところがあるかもしれません
function
1 2//**シートオブジェクトの取得 3let sheetId = '########'; 4//**フォームの回答が反映されるシート 5let sheetName = 'フォームの回答 2'; 6//**ここまでやったら、セル番号設定へ移動 7 8let sheet= SpreadsheetApp.openById(sheetId).getSheetByName(sheetName); 9//リネームした列を別シートに載せる 10 11//シート全体を配列化 12let values = sheet.getDataRange().getValues(); 13 14//先頭行(項目部分)を削除 15values.shift(); 16 17//空の配列 18let arr = []; 19 20for(let i = values.length-1; i >= 0; i--){ 21 //チーム名前を取得(何列目にチーム名あるか?) 22 let name = values[i][1]; 23 //ファイルの位置を取得(何列目にファイルがあるか?) 24 let filePath=values[i][10]; 25 26 //配列の中に同じ名前が無かったらarrの配列に入れる 27 //arr.flat().includes(name)は、arr内にnameがあるか見ている 28 //あったらtrue、無かったらfalseを返す。 29 if(!arr.flat().includes(neme)){ 30 arr.push(values[i]); 31 fileName = neme ; 32 let fileId = filePath.replace(/^.*\?id=/,''); 33 let files = DriveApp.getFileById(fileId); 34 //リネーム 35 files.setName(fileName); 36 } 37} 38 39}
補足
・このエラーは毎回出ますが、ファイルの保存自体はちゃんと行えています。
・二件ファイル未提出の回答がありましたが、それ以来の回答でファイル保存が成功してても毎回エラーメッセージが来るようになりました。
考えられること
❶フォームでファイルをアップせずに送信した場合にこのエラーが出るのかなと思います。
分岐で、”ファイルがアップされなかった場合はこのスクリプトを実行しない”ということはできますでしょうか?
❷ファイル共有の関係で、このシステムでファイルが保存されるドライブのフォルダ場所をフォーム解放後に移動しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。