前提・実現したいこと
googleスプレッドシート上のGAS(Google Apps Script)で、
GMailで特定ラベルのついた受信トレイ内のファイルから添付ファイル(必ずひとつのxls、xlsxファイル)を
特定フォルダに保存しつつ、そのファイルの1行目をメッセージID、件名等とともに
このスプレッドシートに記録していきたいと考えています。
添付ファイルの保存もでき「添付ファイルの1行目」以外については実現できています。
発生している問題・エラーメッセージ
添付ファイルの保存にcreateFileを使用しているため、
この際に返されるFile型オブジェクトからgetIdメソッドでIDを得ると33桁のラベルが得られますが、
このIDをSpreadsheetApp.openByIdで使っても
以下のエラーになり、EXCELファイルを開けません。
ドキュメント(1SRujMdg5N(略))がありません。 ドキュメントが削除されたか、読み取りアクセス権が ない可能性があります。
ID自体が違うのか、保存後にどこかでアクセス権限をつける必要があるのか分かりません。
該当のソースコード
GAS
1var id = messages[i][j].getId(); 2var frm = messages[i][j].getFrom(); 3var subj = messages[i][j].getSubject(); 4var utm = new Date().getTime(); 5var fname = subj + '_' + frm + '_' + id + '_' + utm + '_' + attachments[k].getName() 6attachments[k].setName(fname); 7 8var f = aFolder.createFile(attachments[k]); 9var fl = aFolder.getFilesByName(fname).next(); 10 11var fid = fl.getId(); 12var fid2 = f.getId(); 13var u = fl.getUrl(); 14 15var rsheetbook = SpreadsheetApp.openById(fid2);//(エラー)。 16var rsheetbook = SpreadsheetApp.open(f);//(エラー)。 17var rsheetbook = SpreadsheetApp.open(fl);//(エラー)。 18var rsheetbook = SpreadsheetApp.openById(fid);//(エラー)。 19var rsheetbook = SpreadsheetApp.openByUrl(u);//(エラー)。
試したこと
他にソースコードにある通りいくつかの方法で記述しましたが
全く同じエラーになりました。
また、上の手順で保存されたファイルを
自分でドライブを辿って「アプリで開く」→「googleスプレッドシート」で開いて
URLのID部分を見るとどれも44桁の文字の羅列になっています。
試しにこのIDをSpreadsheetApp.openByIdで使用すると、
正常に開けます。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー