空虚な思いつき

思いついたままに、気軽に書いて・・・。

Google Apps Scriptの勉強

2011年06月24日 | Google Apps Script
ツールバーに作成したscriptを追加する。
function onOpen() {
  var ssMenu = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "管理シート作成", functionName: "main"}];
  ssMenu.addMenu("管理", menuEntries);
}


追加される"管理シート作成"が、ツールバーに表示されるまで多少の時間がかかる。

実行してみての所見:
 ・script内からspreadsheetを新たに作成して、シートを追加すると
  script自体の処理が終了しても、ドキュメント一覧に表示されるまでに
  時間がかかる。

 とにかく気長に待つしかない。
 ※途中で、Errorのメッセージが出た場合は、表示されるまでの時間が
  異常にかかるときもあった。

 ・Googleサーバの処理なので仕方がない。

参考URL:https://libro99.appspot.com/index3?id=644002&page=5
コメント

Google Apps Scriptの勉強

2011年06月20日 | Google Apps Script
HTMLメールのタグを抜く。

function HtmlTagRemover(str) {
	// 文字列のすべてのタグを取り除く
    delete01 = new RegExp(/\n/g);
  delete02 = str.replace(delete01, "");
  delete03 = new RegExp(/>(.*?)</g);
  delete04 = delete02.replace(delete03, ">\n<");
  delete05 = new RegExp(/&nbsp;/g);
  delete06 = delete04.replace(delete05, " ");
  rgexp = new RegExp(/<("[^"]*"|'[^']*'|[^'">])*>/g);
  hoge01 = delete06.replace(rgexp, "");

	return hoge01;
}


参考URL:http://www.0yen-coding.com/2009/05/htmljavascript.html
コメント

Google Apps Scriptの勉強

2011年06月15日 | Google Apps Script
昨日の続き

Gmailのラベル下の受信トレイのメールをSpreadSheetのシートに書き込む。

function gmail() {
// SpreadSheetの使用を宣言する。
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var envsheet = ss.getSheets()[0];            // 環境設定シートを指定する。
  i = envsheet.getRange(2, 10,1,1).getValue(); // メッセージの読み込み位置を求める。
  
// Gmail Serviceの使用を宣言する。
  var threads, threadKey, messages,  messageKey;
  var thread, NewD, mDate;
  var toDate, mDate, Subject,userLabel;
  var sheet, message;
//  threads = GmailApp.getInboxThreads();
//  ユーザLabel下のメッセージリストを取得する。
  userLabel = GmailApp.getUserLabels();
  threads = userLabel[2].getThreads();
  var msgcnt = threads.length - 1;            // メッセージをカウントをする
  //Browser.msgBox(msgcnt);

// 本日の日付を取得する。
  toDate =Utilities.formatDate(new Date(),"GMT","yyyyMMdd");
  Browser.msgBox(toDate);
  sheet = ss.getActiveSheet();

  
  for ( threadKey = i ; threadKey <= msgcnt ; threadKey++){ 
    thread = threads[threadKey];
    messages = thread.getMessages();

    // mailの日付を取得する
    NewD =thread.getLastMessageDate();
    mDate =Utilities.formatDate(NewD,"GMT+9","yyyyMMdd");
    Browser.msgBox(mDate);
    

    if (toDate == mDate) {
      //Logger.log(threads.getFirstMessageSubject());
      // メールの件名をシート名にする
      Subject = thread.getFirstMessageSubject();
      ss.insertSheet();
      sheet = ss.getActiveSheet();
      ss.renameActiveSheet(Subject);
      // メールの本文をシートに格納する
      for (messageKey in messages) {
        message = messages[messageKey];
        sheet.getRange(2, 1, 1, 1).setValue(message.getBody());
        //sheet.setActiveSelection("A1").setColumnWidth(10,100);
         Logger.log(message.getBody());
      }
    }
  }
  //Browser.msgBox(sheet.getName());
  envsheet.getRange(2, 10,1,1).setValue(msgcnt);
  //Browser.msgBox(threadKey);
}
 


注意点:
 ratemaxとかによって、たくさんのメールを処理できない。
 



http://lingr.com/room/GAS_ja/archives/2011/05/17
コメント

Google Apps Scriptの勉強

2011年06月14日 | Google Apps Script
Gmailの受信トレイのメールをSpreadSheetのシートに書き込む。

//メール本文も簡単に取れました。
function gmail() {
// SpreadSheetの使用を宣言する。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var i = 0;

// Gmail Serviceの使用を宣言する。
var threads, threadKey, messages, messageKey;
var mDate, Subject;
threads = GmailApp.getInboxThreads();

for (threadKey in threads) {
//if ( i <= 1 ) {
var thread = threads[threadKey];
//Logger.log(threads.getFirstMessageSubject());
messages = thread.getMessages();
var NewD =thread.getLastMessageDate()
var mDate =Utilities.formatDate(NewD,"GMT+9","yyyyMMdd");
// Browser.msgBox(mDate);

if (mDate >="20110613") {
// メールの件名をシート名にする
Subject = thread.getFirstMessageSubject();
var newSheet = ss.insertSheet();
var sheet = ss.getActiveSheet();
ss.renameActiveSheet(Subject);
// メールの本文をシートに格納する
for (messageKey in messages) {
var message = messages[messageKey];
sheet.getRange(2, 1, 1, 1).setValue(message.getBody());
//sheet.setActiveSelection("A1").setColumnWidth(10,100);
Logger.log(message.getBody());
}
}
i += 1;
// }
}

}

できてないこと:
 ① カラム幅を変更できていない。
 ② メール本文を読み込むとHtmlのタグが挿入されるので、trimできていない。

まだまだ、未完成。
コメント

Google Apps Scriptの勉強

2011年06月14日 | Google Apps Script
自分で作成したLabel一覧を取得し、メールで送信する

function GmailSearch4() {
// Gmailサービスの使用を宣言する。
var gSearch = GmailApp.getInboxThreads();
var gLabels = GmailApp.getUserLabels();
// var gLabels = GmailApp.getLabels();
var mail;
// 自分で作成したLabel一覧を取得する
for (mail in gLabels) {
  Logger.log(gLabels[mail].getName());
}
MailApp.sendEmail("メールアドレス", "Label Log", Logger.getLog());

}
コメント (1)

Google Apps Scriptの勉強

2011年06月14日 | Google Apps Script
受信トレイのメール一覧を取得して、メールする。

function GmailSearch() {
// Gmailサービスの使用を宣言する。
var gSearch = GmailApp.getInboxThreads();
var mail;
// 受信トレイのメール一覧を取得する
for (mail in gLabels) {
  Logger.log(gSearch[mail].getFirstMessageSubject());
}
MailApp.sendEmail("メールアドレス", "Label Log", Logger.getLog());

}

ポイント:
 ・GmailApp.getInboxThreads()の使い方
 ・Logger.log、Logger.getLog()を使い方




参考URL:http://lingr.com/room/GAS_ja/archives/2011/05/17


コメント

Google Apps Scriptの勉強

2011年06月14日 | Google Apps Script
メッセージ表示とメッセージ入力を行う。

function myFunction() {
Browser.msgBox("Google Apps にようこそ!");
var value=Browser.inputBox("名前の入力:");
if(value!=""){
Browser.msgBox(value+"さん、こんにちは!");
}else{
Browser.msgBox("何かを入力してください!");
}
}

参考URL:忘れました(滝汗)
コメント

Google Apps Scriptの勉強

2011年06月14日 | Google Apps Script
SpreadSheetのコピーを行う。

function CopySheet() {
// SpreadSheetシート 元ネタを設定
var ss1 = SpreadsheetApp.openById("コピー元のシートのOpenIDを指定する");
SpreadsheetApp.setActiveSpreadsheet(ss1);
var sheet1 = SpreadsheetApp.getActiveSpreadsheet();

// SpreadSheetシート 新規作成されたシートの設定
var ss2 = SpreadsheetApp.openById("コピー先のシートのOpenIDを指定する");
SpreadsheetApp.setActiveSpreadsheet(ss2);
var sheet2 = SpreadsheetApp.getActiveSpreadsheet();

// SpreadSheetシート 新規作成されたシートの設定
sheet1.getSheets()[0].copyTo(sheet2);

// SpreadSheetシート シート名変更
sheet2.setActiveSheet(sheet2.getSheetByName("コピー ~ 管理表"));
sheet2.renameActiveSheet("管理表");

}

ポイント:シートをコピーするとシート名の頭に"コピー ~ "が追加される。
     この名前を元と同じにするためには、renameActiveSheetを使う。
コメント

Goolge Apps Scriptの勉強

2011年06月14日 | Google Apps Script
Functionの呼び出し方と日付の"yyyymmdd"形式の日付を表示する。

function OnLoad() {
var Nowd = NowDate();
Browser.msgBox(Nowd);
}


function NowDate() {
var NewDate =Utilities.formatDate(new Date(),"GMT+9","yyyyMMdd")
return NewDate;
// Browser.msgBox(NewDate);
}

用途:日付をドキュメントファイル名につけるときに使用しようと思っている
コメント

Google Apps Scriptの勉強

2011年06月13日 | Google Apps Script
既に作成されたドキュメントをSpreadSheetに書き込む

function search() {
// Prompt the user for a search term
var searchTerm = Browser.inputBox("Enter the string to search for:");

// Get the active spreadsheet and the active sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();

// Set up the spreadsheet to display the results
var headers = [["File Name", "File Type", "URL"]];
sheet.clear();
sheet.getRange("A1:C1").setValues(headers);

// Search the files in the user's Docs List for the search term
var files = DocsList.find(searchTerm);

// Loop through the results and display the file name, file type, and URL
for (var i = 0; i < files.length; i++) {
sheet.getRange(i+2, 1, 1, 1).setValue(files[i].getName());
sheet.getRange(i+2, 2, 1, 1).setValue(files[i].getType());
if (files[i].getType() == "document") {
urlBase = "https://docs.google.com/Doc?docid=";
}
else if (files[i].getType() == "spreadsheet") {
urlBase = "https://spreadsheets.google.com/ccc?key=";
}
else if (files[i].getType() == "presentation") {
urlBase = "https://docs.google.com/present/view?id=";
}
else {
urlBase = "https://docs.google.com/fileview?id=";
}
sheet.getRange(i+2, 3, 1, 1).setValue(urlBase + files[i].getId());
}
}

作った人の名前を忘れました。
ありがとうございます。
コメント

Google Apps Scriptの勉強

2011年06月13日 | Google Apps Script
Gmailを使って、テキストメールを送信する。

function sMail() {
MailApp.sendEmail("送信先メールアドレス", "subject", 'test');
//  ①         ②   ③
}

指定順序:
 ① 送信先メールアドレス
 ② 件名
 ③ 本文


もう一段勉強したいこと:
 ・添付ファイルを送信できるようにしたい。
 ・複数のメールアドレスへ送信できるようにしたい。

コメント

Google Apps Scriptの勉強

2011年06月13日 | Google Apps Script
Spreadsheetを新たに作る

function ssNew() {
var ssNew = SpreadsheetApp.create("新規作成シート名");
Browser.msgBox(ssNew.getName());
Browser.msgBox(ssNew.getUrl());
Browser.msgBox(ssNew.getId());
}



getName() :作成したSpreadSheet名
getUrl()  :作成したSpreadSheetの登録先URL
getId()  :作成したSpreadSheetの登録先IDが入る。
      「https://spreadsheets.google.com/ccc?key=ここの部分

JavaScriptなんて、久しく触っていないので、すっかり忘れちまっている(笑)
コメント

ZenBack

<script type="text/javascript">document.write(unescape("%3Cscript")+" src='http://widget.zenback.jp/?base_uri=http%3A//blog.goo.ne.jp/attaka1&nsid=102585126361292901%3A%3A102585146493959125&rand="+Math.ceil((new Date()*1)*Math.random())+"' type='text/javascript'"+unescape("%3E%3C/script%3E"));</script>