0

Google Scripts を使用してメールの本文を取得しています。新しいユーザーからのアップロードを通知する通常の YouTube メールに含まれるリンクのみを保存するようにしています。JavaScriptを使用して、メールに含まれる画像をクリックしたときにたどるリンクのみを保存したいと思います。以下は、電子メールの一部がどのように見えるかのサンプルです。

メールサンプル

メールの内容はこうです。

    <div>
<table width="620" cellspacing="0" cellpadding="0" border="0" align="center"><tr><td bgcolor="#F0F0F0">
<table width="578" cellspacing="0" cellpadding="0" border="0" align="center">
<tr>
<td height="16"></td>
</tr>
<tr>
<td align="center" valign="top">
<img src="http://s.ytimg.com/yt/img/email/digest/email_header.png">
</td>
</tr>
<tr>
<td height="16"></td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF">
<div style="border-style:solid;border-width:1px;border-color:#cccccc">
<table width="578" cellspacing="0" cellpadding="0" border="0" align="center">
<tr>
<td height="22" colspan="3"></td>
</tr>
<tr>
<td width="40"></td>
<td width="498">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td bgcolor="#FFFFFF" align="left" width="50">
<img src="https://i.ytimg.com/i/N5jZlcpSP00e_zShDw9EfQ/1.jpg" height="50" width="50">
</td>
<td width="16"></td>
<td>
<div style="font-family:arial,Arial,sans-serif;font-size:18px;color:#333333;line-height:24px" height="59">
FatalDubstepHD has uploaded <b>Empressto - No Love [Dubstep]</b>.
</div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0">
<tr><td height="22"></td></tr>
</table>
<div style="border-bottom:1px solid #e1e1e1"></div>
<table cellspacing="0" cellpadding="0" border="0">
<tr><td height="22"></td></tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" style="width:480px;margin:0 9px">
<tr>
<td>
<a href="http://www.youtube.com/watch?v=zTYri0ei45Q&amp;feature=em-uploademail" style="text-decoration:none;display:block" class="nonplayable" target="_blank">
<img src="http://i2.ytimg.com/vi/zTYri0ei45Q/hqdefault.jpg" height="360" width="480" border="0">
</a>
</td>
</tr>
<tr><td height="16"></td>
</tr>
<tr>
<td width="480">
<a href="http://www.youtube.com/watch?v=zTYri0ei45Q&amp;feature=em-uploademail" style="text-decoration:none" target="_blank">
<div style="font-family:arial,Arial,sans-serif;font-size:15px;color:#333333;line-height:20px;font-weight:bold">
Empressto - No Love [Dubstep]
</div>
</a>
<div style="font-family:arial,Arial,sans-serif;font-size:13px;color:#999999;line-height:20px">
by
<a href="http://www.youtube.com/user/FatalDubstepHD?feature=em-uploademail" style="font-size:13px;color:#999999;line-height:20px;text-decoration:none" target="_blank">FatalDubstepHD</a>
</div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0">
<tr><td height="16"></td></tr>
</table>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="498">
<div style="font-family:arial,Arial,sans-serif;font-size:13px;color:#333333;line-height:20px">
● Free Download<br><a href="https://soundcloud.com/empresstoro/empressto-no-love" target="_blank">https://soundcloud.com/<WBR>empresstoro/empressto-no-love</a><br><br>● Empressto <br><a href="http://www.facebook.com/EmpreSSto" target="_blank">http://www.facebook.com/<WBR>EmpreSSto</a><br><a href="http://www.twitter.com/Empressto" target="_blank">http://www.twitter.com/<WBR>Empressto</a><br><a href="http://www.youtube.com/user/TheOfficialEmpressto" target="_blank">http://www.youtube.com/user/<WBR>TheOfficialEmpressto</a><br><br>● Fatal Dubstep<br><a href="http://www.facebook.com/FatalMusicUK" target="_blank">http://www.facebook.com/<WBR>FatalMusicUK</a><br><a href="http://www.twitter.com/FatalMusicUK" target="_blank">http://www.twitter.com/<WBR>FatalMusicUK</a><br><br>● Owner Of Fatal<br><a href="http://www.twitter.com/Mihalis_Costa" target="_blank">http://www.twitter.com/<WBR>Mihalis_Costa</a><br><br>● Contact Email/Submit Music<br><a href="mailto:fatalmusicsubmission@gmail.com" target="_blank">fatalmusicsubmission@gmail.com</a>
</div>
</td>
</tr>
</table>
</td>
<td width="40"></td>
</tr>
<tr>
<td height="22" colspan="3"></td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td height="16"></td>
</tr>
<tr>
<td align="center">
<table cellspacing="0" cellpadding="0" border="0" align="center">
<tr>
<td width="40"></td>
<td width="498">
<div style="color:#999999;line-height:14px;font-size:11px;font-family:arial,Arial,sans-serif">
You were sent this email because you chose to receive updates about new videos uploaded by <a href="http://www.youtube.com/user/FatalDubstepHD?feature=em-uploademail" style="text-decoration:none;color:#1c62b9" target="_blank">FatalDubstepHD</a>. If you don&#39;t want these updates anymore, you can change your preferences by visiting the <a href="http://www.youtube.com/subscription_manager" style="text-decoration:none;color:#1c62b9" target="_blank">subscription manager</a>.
</div>
</td>
<td width="40"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="16"></td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="0" border="0" align="center">
<tr>
<td width="40"></td>
<td width="498">
<div style="color:#999999;font-size:11px;line-height:14px;font-family:arial,Arial,sans-serif">
©2013 YouTube, LLC 901 Cherry Ave, San Bruno, CA 94066
</div>
</td>
<td width="40"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="22"></td>
</tr>
</table>
</td></tr></table>
</div>

ここでの問題は、このような電子メールから URL だけを除外するにはどうすればよいかということです。また、テキスト3Dが URL に追加されているように見えるため、URL が無効になっているため、それも削除する必要があります。 URL。どうすればこれを行うことができるかについてのアイデアはありますか?

編集:

これは私が使用しているコードで、解析データがありません:

function processInbox() {
  // get all threads in inbox
  var label = GmailApp.getUserLabelByName("Social/YouTube/Dubstep");
  var doneLabel = GmailApp.getUserLabelByName("Social/YouTube/Dubstep (added)");
  var messages = label.getThreads();
  var max = Math.min(messages.length,1);
  for( var i = 0; i < max; ++i ) {
    var email = messages[i].getMessages()[0];
    var contents = email.getBody();

    //PARSE HERE
    var xml = Xml.parse(contents,true);
    Logger.log(xml);
    GmailApp.sendEmail('MY EMAIL', 'Xml Contents', Logger.getLog());



    //messages[i].markRead();
    //messages[i].removeLabel(label).addLabel(doneLabel);
  }
};

EDIT2: 新しいコード:

function processInbox() {
  // get all threads in inbox
  var label = GmailApp.getUserLabelByName("Social/YouTube/Dubstep");
  var doneLabel = GmailApp.getUserLabelByName("Social/YouTube/Dubstep (added)");
  var messages = label.getThreads();
  var max = Math.min(messages.length,5);
  for( var i = 0; i < max; ++i ) {
    var email = messages[i].getMessages()[0];
    var contents = email.getBody();
    var st = contents.indexOf('<a href="http://www.youtube.com/watch?v=');
    var str1 = contents.substr(st+9,80);
    var end = str1.indexOf('&amp');
    var link = str1.substring(0,end);
    Logger.log(link); 
    GmailApp.sendEmail('EMAIL', 'Xml Contents', Logger.getLog());

    Logger.clear();

    //messages[i].markRead();
    //messages[i].removeLabel(label).addLabel(doneLabel);
  }
4

1 に答える 1

1

XML serviceを使用して HTML を解析し、そこから要素を取得するのが最善の方法だと思います。

こちらのドキュメントを参照し、lenient パラメータをtrue

少し前にこの投稿で同様のアプローチを使用しましたが、アイデアを見ることができます...


編集: このアプローチでは成功しませんでした...文字列操作を使用して別のことを試しました:

...
var contents = email.getBody();
var st = contents.indexOf('<a href="http://www.youtube.com/watch?v=');
var str1 = contents.substr(st+9,80);
var end = str1.indexOf('&amp');
var link = str1.substring(0,end);
Logger.log(link);    

この場合は機能しますが、常に機能するかどうかを確認する必要があります。

注 : youTube から電子メールで送信された他の共有リンクでテストしたところ、毎回動作するようでした ;-)

于 2013-03-09T22:15:46.003 に答える