顯示具有 小工具 標籤的文章。 顯示所有文章
顯示具有 小工具 標籤的文章。 顯示所有文章

2019年12月13日 星期五

【.gs】專屬line聊天機器人用google script建立,功能完全自訂

要建立line聊天機器人,步驟不多,但是有點雜,用圖片不好講,所以有拍一個影片。那下面的文章有用的到的工具,請搭配使用~

line聊天機器人詳細建立步驟(影片)

line聊天機器人工具列表

Google Script 連結

Line Developers 連結

下面當然是最重要的code的部分啦~

function doPost(e) {
  //認證身份,重新輸入line@ channel_access_token
  var CHANNEL_ACCESS_TOKEN = '這邊換掉';
  var msg= JSON.parse(e.postData.contents);

  //除錯用
  Logger.log(msg);
  console.log(msg);

  //從接收到的訊息中取出 replyToken 和發送的訊息文字
  var replyToken = msg.events[0].replyToken;
  var userMessage = msg.events[0].message.text;

  if (typeof replyToken === 'undefined') {
    return;
  };

  //定義回傳訊息
  var reply_message=[{
      'type': 'text',
      'text': '我是中編Bot'
    }];

  //回傳訊息給line 並傳送給使用者
  var url = 'https://api.line.me/v2/bot/message/reply';
  UrlFetchApp.fetch(url, {
      'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': reply_message,
    }),
  });
}

line聊天機器人詳細建立步驟(文字)

1.首先去Line Developers登入,並建立一個line@帳號,(這邊用全新的乾淨帳號,如果你已經有了的話一樣先用新的,後面再用原本的比較不會出錯)

line聊天機器人

2.先建立一個provider,並且幫他命名

line聊天機器人

3.建立一個channel,要選messaging API那種

line聊天機器人

4.把基本資料填好

line聊天機器人 line聊天機器人 line聊天機器人 line聊天機器人 line聊天機器人

5.去message API那個欄位發佈一個access token

line聊天機器人 line聊天機器人

6.然後去google script建立一個新專案

line聊天機器人

7.幫專案命名並且把code貼進去

line聊天機器人

8.把步驟五的access token換掉code中的access token

line聊天機器人 line聊天機器人

9.然後發佈成網路應用程式

line聊天機器人

10.選新增、自己為執行者、最下面那個要選anyone,even anonymous

line聊天機器人

11.然後核對權限

line聊天機器人 line聊天機器人 line聊天機器人 line聊天機器人 line聊天機器人 line聊天機器人

12.把上面步驟11裡取得的網址貼回webhook裡面

line聊天機器人

大功告成,可以加他來測試看看了~

2019年12月10日 星期二

【Catalog_Generator】html網頁自動產生目錄

大家有用word或是雲端文件自動產生文章目錄吧~

它的原理很簡單,就是用階層標示出哪邊是第一層標題,哪邊是第二層標題。

然後用一個列表把所有的標題放在一起,只要點了列表他就會自動跳到相對應的標題。

那就先看怎麼使用吧!

catalog_generator_code說明

<div id="demo"></div>
<script type="text/javascript">
  function generate_cat(){
    var config ={
      'catalog1_name':'catalog1', //catalog1可以改成階層一自訂的class名稱
      'catalog2_name':'catalog2', //catalog2可以改成階層二自訂的class名稱
      'target_id':'demo', //目錄產生在id='demo'的元素裡,demo可以改
      'target_id_width':'200px',//目錄的寬度
      'list_style':'none'//列表的形式,"decimal"是數字
    };
    start_cat(config);
  }
</script>
<script src="https://gist.githack.com/joseph50807/f5b0cbb99237aa692d6f8428dc287f37/raw/35df7390816a0b6b1edde21f56e4784c65cb5ed5/catalog_generator.js"></script>

第一個部分div是標記目錄頁要產生的位置,你可以選擇放在文章最上面或是你有自己做一個浮動的框框,都可以。

第二個部分script generate_cat()是讓你可以自訂一些參數,我這邊只有設定兩個階層。

catalog 1_name是標出階層一所要用的class名稱,catalog2_name是標出階層二所要用的class名稱,可以依照你固有的或是你常用的方式幫class命名。

target_id就是你要產生目錄的位置的id,預設是demo就是上面那個div的id

target_id_width是目錄的寬度

list_style是目錄裡面的每一列前面的符號,預設是沒有的,"decimal"是阿拉伯數字,"disc"是實心的點點,"circle"是空心的點點

第三個部分的script就是已經寫好的script,start_cat()這個函式在裡面有定義,generate_cat()也是在裡面觸發的。

catalog_generator使用步驟

1.將上面的碼貼到你的網頁文章裡面

2.將階層一的所有文字加入階層一的class名稱

3.將階層二的所有文字加入階層二的class名稱

optional:如果嫌每次都要貼一次很麻煩,那你可以想辦法把script都貼到head裡面,變成全域的。

catalog_generator簡易除錯

Q:為什麼貼了沒有跑出來?

1.重貼一次,這次注意只要改英文字母和數字,符號都不要動!

2.檢查是不是有兩個同樣的id

3.檢查是不是貼上有亂碼

Q:為什麼列表有多(有少)

1.檢查是不是你要的標題都有正確的class名稱

2.檢查是不是你其他的東西用到一樣的calss名稱了

Q:我的沒有正確的跳轉

1.檢查列表裡面的href是不是跟目標的id相同

2.用id搜尋是不是有相同id

Q:我的還是沒跑出來需要深度檢查

1.f12打開來先檢查console裡面有沒有紅色錯誤

2.直接在console裡面打『generate_cat()』,這時候出現了的話就是在執行序列上有問題,你可以寄信給我。

3.上一步驟出現Uncaught TypeError的話,那也寄信給我吧。

如果還有更多問題,那就跟我聯絡吧~ 中編粉絲團 email me

2019年11月3日 星期日

【 .GS】Gmail自動發信串連雲端試算表和google script

用雲端試算表操控Gmail群發電子郵件,原來這麼容易,謝謝google大神

雲端試算表

首先要有一個雲端試算表,我是用下面的試算表來發信

附件的id是在公開pdf共用連結的時候,中間的id亂碼,如下圖/d/到/view 中間,

我分兩個頁籤,第一個頁籤是給發信的時候用的,第二個是給我做運算用的,運算什麼?就是把人名阿,單位阿,信件地址等自動帶入信件裡面,把名單填入第二個頁籤後,回到第一個頁籤用excel公式一次就拉好所有的信件內容了,很懶的話就按我去建立副本

接著我們就要來設定指令碼

執行步驟

  1. 按工具列裡面的【工具】>【指令碼編輯器】,畫面跳到google script編輯器
  2. 把下面的程式碼完整的覆蓋所有內容,並對內容稍做修改,
  3. 完成後按【檔案】>【儲存】
  4. 按【執行】>【執行函式】,第一次執行的時候會要求給予權限,阿都自己寫的,所以就大方的給吧
  5. 在執行的時候會有一個黃色小框框在畫面上,完成以後按【查看】>【紀錄】,可以看到所有寄出的信件標題。我還是會建議在系統最上面還是放一個自己的信箱,確保有正常執行

google script參考程式碼

function mailto() {
  var spreadsheet = SpreadsheetApp.openById('1JpoRVp4CHG40l_owMBeaXnXM0Yaqma5x2osu71xG8Us'),//這邊要換成雲端試算表連結裡的id
   sheet = spreadsheet.getSheetByName('list'),//這邊要換成你的試算表的第一個頁籤的名稱
   lastCol = sheet.getLastColumn(),
   lastRow = sheet.getLastRow(),
   range = sheet.getRange(1,1,lastRow,lastCol),
   Values = range.getValues();
  Logger.log(Values);
  for(var i=1;i < Values.length;i++){
   Logger.log(Values[i][1]);
   var file = DriveApp.getFileById(Values[i][3]),
    file1 = DriveApp.getFileById(Values[i][4]),
    file2 = DriveApp.getFileById(Values[i][5]),
    file3 = DriveApp.getFileById(Values[i][6]);//這邊設置四個附件檔,沒有那麼多的話要自己刪掉,記得最後要用;結尾
    Logger.log(file);
   GmailApp.sendEmail(Values[i][0],Values[i][1],Values[i][2], {
    attachments:[file.getAs(MimeType.PDF),file1.getAs(MimeType.PDF),file2.getAs(MimeType.PDF),file3.getAs(MimeType.PDF)],//這邊設置四個附件檔,沒有那麼多的話要自己刪掉,例如[file.getAs(MimeType.PDF),file1.getAs(MimeType.PDF),file2.getAs(MimeType.PDF)],
    htmlBody:Values[i][2]
    }
   );
  };
}

後記:
1.gs的運轉速度不是很快,google有設定安全的最長執行時間,所以大概一次寄50封就有點極限了
2.gmail有設置一天的發信上限,我寄了差不多一百封就要換帳號了,哈哈