コード ```GAS初心者です。 下記質問をする前にネットで色々検索してみたのですが、 答えが見つからなかったので質問させて頂いてます。 Googole ドライブ上に、日本語ファイル名のスプレッド(例:テストファイル) を作成。 var file = getFilesByName (“テストファイル”) を実行するとエラーメッセージで「イテレータが最後に到達しました」 と表示されて処理が進みません。 GAS上で、日本語ファイル名を扱いたい場合に何か特殊な設定や、 プログラム中に必要な定義等有れば教えてください。 よろしくお願いします。 '18/01/08 上記Qのコードとエラーメッセージを追記 ```GAS function myFunction() { var file = DriveApp.getFilesByName("テストファイル1").next(); GmailApp.sendEmail('xxxx@xx.xx.xx', 'テストメール', '本文テスト', { attachments: [file], from: 'XXXX@XXXX.xx', name: 'XXXX' }); }
【エラーメッセージ】
次のオブジェクトを取得できません。イテレータが末尾に到達しました。(行 2、
ちなみに、以下のコードを実行するとログにはファイル名が
出力されます。
GAS
1function myFunction() { 2 var finfo = DriveApp.getFiles(); 3 4 for (i=1;finfo.hasNext();i++) { 5 var fname = finfo.next() 6 Logger.log(fname); 7 } 8}
【ログの内容】
[18-01-08 09:12:54:651 JST] テストファイル1
【コード修正を修正】
ご指摘通りコードを修正してみました。
実行したらエラーにはならず、日本語ファイル名が変数に入ってきました。
何故でしょう?
GAS
1function myFunction() { 2// var finfo = DriveApp.getFiles(); 3 var finfo = DriveApp.getFilesByName("テストファイル1"); 4 5 for (i=1;finfo.hasNext();i++) { 6 var fname = finfo.next() 7 Logger.log(fname); 8 } 9}
【実行結果】
[18-01-08 11:18:59:702 JST] テストファイル1
日本語でなければみつかりますか?
はい。英字であれば見つかります。一応存在を確認する為に、getFiles()を発行すると当該ファイル名がlog出力されました。しかしながら、getFileByNameではエラーになるのです。
その部分のスクリプトを書き写すのではなくコピペしてもらえますか? コメント欄ではなく質問に追記する形で、コードブロックも使ってインデントが消えないようにしてください。
ご指摘、有難うございます。明日、コードやエラーメッセージを質問欄に記載させていただきます。
関数名が同じ myFunction ですが、記憶で書いたものではなくコピペしましたか? どういうことでしょうか?
両コードレス共に別々のプロジェクトです。
では下のスクリプトを書き換えて DriveApp.getFiles(); を DriveApp.getFilesByName("テストファイル1"); にするとどうなりますか? 新しくプロジェクトを作らず、現在ある下のスクリプトを書き換えてください。
回答2件
あなたの回答
tips
プレビュー