11151
(ふぇにっくす)
1
Gmailの添付ファイルをダウンロードする下記のコードを実行したいのですが、エラー表示が出ていて実行できません。
エディタを開くと特に赤線が表示されることもないのですが・・・。
class MyClass
{
public static void GetAttachments(GmailService service, String userId, String messageId, String outputDir)
{
try{
Google.Apis.Gmail.v1.Data.Message
message=service.Users.Messages.Get(userId,messageId).Execute();
IList<Google.Apis.Gmail.v1.Data.MessagePart>
parts=message.Payload.Parts;
foreach(Google.Apis.Gmail.v1.Data.MessagePart part in parts)
{
if(!String.IsNullOrEmpty(part.Filename))
{
String attId=part.Body.AttachmentId;
google.Apis.Gmail.v1.Data.MessagePartBody
attachPart=service.Users.Messages.Attachments
.Get(userId,messageId,attId);
String attachData=attachPart.Data.Replace('-','+');
attachData=attachData.Replace('_','/');
Byte[] data=Convert.FromBase64String(attachData);
File.WriteAllBytes(Path.Combine(outputDir,part.Filename),data);
}
}
}
catch(Exception e)
{
Console.WriteLine("An error occured:" + e.Message);
}
}
ちなみに出ているのは
No Compiled code to run.
error CS1513 :} が必要です。At line -1
です。
どなたかどこを直せばいいかアドバイスください。
Yoichi
(Yoichi)
3
こんにちは
Invoke Codeアクティビティの内部のコードは、メソッド(関数)の中身を記述するイメージと思っていただいた方が良いと思います。そのためクラス定義やメソッド定義はできないと思います。
上記を実現するのであれば、
public static void GetAttachments(GmailService service, String userId, String messageId, String outputDir)
の部分はInvoke Codeの引数として定義した上で、コードにはこのメソッドの中身を記述するイメージになると思います。
11151
(ふぇにっくす)
4
すみません。上記1個足りませんでしたね。
最後に}を足しましたら、次のエラーが足されました。(元のはそのままです)
error CS1022 : 型、名前空間の定義、またはファイルの終わりが必要です。At line 31
ちなみにコードエディタでは最終行は30になっています。
11151
(ふぇにっくす)
5
ありがとうございます。
早速ためして下記のように書き換え、引数をプロパティで設定しました。
try
{
Google.Apis.Gmail.v1.Data.Message message=service.Users.Messages.Get(userId,messageId).Execute();
IList<Google.Apis.Gmail.v1.Data.MessagePart> parts=message.Payload.Parts;
foreach(Google.Apis.Gmail.v1.Data.MessagePart part in parts)
{
if(!String.IsNullOrEmpty(part.Filename))
{
String attId=part.Body.AttachmentId;
google.Apis.Gmail.v1.Data.MessagePartBody attachPart=service.Users.Messages.Attachments
.Get(userId,messageId,attId);
String attachData=attachPart.Data.Replace('-','+');
attachData=attachData.Replace('_','/');
Byte[] data=Convert.FromBase64String(attachData);
File.WriteAllBytes(Path.Combine(outputDir,part.Filename),data);
}
}
}
catch(Exception e)
{
Console.WriteLine(“An error occured:” + e.Message);
}
しかし次のメッセージが現れ実行できずじまいです。
error CS0246:型、または空間名’google’が見つかりませんでした。usingディレクティブまたはアセンブリ参照が不足しています。At line 9
上記コードで9行目は
String attId=part.Body.AttachmentId;
です。
Yoichi
(Yoichi)
6
こんにちは
C#をお使いですよね?C#では大文字と小文字が厳密に解釈されます。
そのため Google
とすべきではないでしょうか?
11151
(ふぇにっくす)
7
おっしゃる通りでした!
また、getのあとのexecuteが必要でした。
ありがとうございます!
1 Like