(1) Push7のGAS1 notifyPush7.gs
apikey、 appno(App Number)は、こちらのブログの<2>を参照してください。
xxxxxxxxxx
yyyyyyyyyy
https://abcd.com/zzzzzzzzzz.jpeg は任意の画像のある場所です。
const notifyPush7 = () => {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('sheet3');
// const ss = SpreadsheetApp.getActiveSpreadsheet();
// const sheet = ss.getActiveSheetByName('sheet3');
const apikey = "xxxxxxxxxx"
const appno = 'yyyyyyyyyy'
const url = 'https://api.push7.jp/api/v1/yyyyyyyyyy/send';
const headers = {
'Content-Type' : 'application/json; charset=UTF-8',
'Authorization' : 'Bearer ' + apikey,
};
const data = {
'title': sheet.getRange(3,3).getValue(),
'body' : sheet.getRange(3,4).getValue(),
'icon' : "https://abcd.com/zzzzzzzzzz.jpeg",
'url' : sheet.getRange(3,5).getValue(),
'apikey' : "xxxxxxxxxx",
'disappear_instantly' : false,
//'transmission_time": "2021/10/10 10:10"
//'query' : true,
}
const options = {
'method' : 'post',
'headers': headers,
'payload': JSON.stringify(data)
};
UrlFetchApp.fetch(url,options);
}
(2) Push7のGAS2 push7.gs
function push7() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('sheet3');
//var c3_data = sheet.getRange(3,3).getValues(); //タイトル
//var d3_data = sheet.getRange(3,4).getValues(); //本文
//var e3_data = sheet.getRange(3,5).getValues(); //関係リンク
var f3_data = sheet.getRange(3,6).getValues(); //アクション
const init_g3_data = sheet.getRange(3,7).getValues(); // 戻り値
var date = new Date();
//Browser.msgBox(f3_data);
//戻り値がスペースでないなら、アクションをfalseに変える
if(init_g3_data=="") {
}
else {
sheet.getRange(3,6).setValue("false");
}
// アクションがtrueの場合は、戻り値をスペースにする。
if(f3_data == "true" ){
sheet.getRange(3,7).setValue("");
// Push7への投稿を実行する
notifyPush7();
// 今の日時を、戻り値に入れる。
sheet.getRange(3,7).setValue(date);
sheet.getRange(3,8).setValue("投稿済みです。");
}
else {
//sheet.getRange(3,7).setValue(date);
sheet.getRange(3,8).setValue("投稿せず通過しました。");
}
}
(3) BloggerのGAS1 bloggersend.gs
Bloggerに使うGoogleアカウントの@より左の部分です。
aaaaaaaaaa
function bloggersend(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('sheet3');
const from = 'aaaaaaaaaa@gmail.com';
const to = 'aaaaaaaaaa.posting@blogger.com';
const subject = sheet.getRange(2,3).getValue();
const body = sheet.getRange(2,4).getValue();
GmailApp.sendEmail(to, subject, body);
}
(4) BloggerのGAS2 blogger.gs
function blogger() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('sheet3');
var f2_data = sheet.getRange(2,6).getValues(); //アクション
const init_g2_data = sheet.getRange(2,7).getValues(); // 戻り値
var date = new Date();
//Browser.msgBox(f2_data);
//戻り値がスペースでないなら、アクションをfalseに変える
if(init_g2_data=="") {
}
else {
sheet.getRange(2,6).setValue("false");
}
// アクションがtrueの場合は、戻り値をスペースにする。
if(f2_data == "true" ){
sheet.getRange(2,7).setValue("");
// Bloggerへの投稿を実行する
bloggersend();
// 今の日時を、戻り値に入れる。
sheet.getRange(2,7).setValue(date);
sheet.getRange(2,8).setValue("投稿済みです。");
}
else {
//sheet.getRange(2,7).setValue(date);
sheet.getRange(2,8).setValue("投稿せず通過しました。");
}
}
(5) LINEのGAS1 linesend.gs
LINE公式アカウントを取得→LINE Developersに書いてあるChannnel Access Token
” “の間に入る
bbbbbbbbbb
を取得します。実際は非常に長いです。
Your user ID
cccccccccc
const linesend = () => {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('sheet3');
// LINE Developersに書いてあるChannel Access Token
const ACCESS_TOKEN = "bbbbbbbbbb"
// 自分のユーザーIDを指定します。LINE Developersの「Your user ID」の部分です。
const USER_ID = 'cccccccccc'
const url = 'https://api.line.me/v2/bot/message/broadcast';
const headers = {
'Content-Type' : 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + ACCESS_TOKEN,
};
const message = sheet.getRange(4,3).getValue();
const data = {
// 'to' : USER_ID,
'messages' : [
{
'type':'text',
'text':message,
}
]
};
const options = {
'method':'post',
'headers': headers,
'payload':JSON.stringify(data)
};
UrlFetchApp.fetch(url,options);
}
(6) LINEのGAS2 line.gs
function line() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('sheet3');
var f4_data = sheet.getRange(4,6).getValues(); //アクション
const init_g4_data = sheet.getRange(4,7).getValues(); // 戻り値
var date = new Date();
//Browser.msgBox(f4_data);
//戻り値がスペースでないなら、アクションをfalseに変える
if(init_g4_data=="") {
}
else {
sheet.getRange(4,6).setValue("false");
}
// アクションがtrueの場合は、戻り値をスペースにする。
if(f4_data == "true" ){
sheet.getRange(4,7).setValue("");
// Lineへの投稿を実行する
linesend();
// 今の日時を、戻り値に入れる。
sheet.getRange(4,7).setValue(date);
sheet.getRange(4,8).setValue("投稿済みです。");
}
else {
//sheet.getRange(4,7).setValue(date);
sheet.getRange(4,8).setValue("投稿せず通過しました。");
}
}
(7) GmailのGAS1 gmailsend.gs
Gグループメールに使うGoogleアカウントの@より左の部分です。
dddddddddd
function gmailsend(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('sheet3');
const from = 'dddddddddd@gmail.com';
const to = 'dddddddddd@googlegroups.com';
const subject = sheet.getRange(5,3).getValue();
const body = sheet.getRange(5,4).getValue();
GmailApp.sendEmail(to, subject, body);
}
(8) GmailのGAS2 gmail.gs
function gmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('sheet3');
var f5_data = sheet.getRange(5,6).getValues(); //アクション
const init_g5_data = sheet.getRange(5,7).getValues(); // 戻り値
var date = new Date();
//Browser.msgBox(f5_data);
//戻り値がスペースでないなら、アクションをfalseに変える
if(init_g5_data=="") {
}
else {
sheet.getRange(5,6).setValue("false");
}
// アクションがtrueの場合は、戻り値をスペースにする。
if(f5_data == "true" ){
sheet.getRange(5,7).setValue("");
// グループGmailへの投稿を実行する
gmailsend();
// 今の日時を、戻り値に入れる。
sheet.getRange(5,7).setValue(date);
sheet.getRange(5,8).setValue("投稿済みです。");
}
else {
//sheet.getRange(5,7).setValue(date);
sheet.getRange(5,8).setValue("投稿せず通過しました。");
}
}
(9) TwitterのGAS1 tweetsend.gs
eeeeeeeeee
ffffffffff
gggggggggg
hhhhhhhhhh
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('sheet3');
var CONSUMER_KEY = 'eeeeeeeeee'; // consumer key = API key
var CONSUMER_SECRET = 'ffffffffff'; //consumer secret = API secret key
var TOKEN = 'gggggggggg';
var TOKEN_SECRET = 'hhhhhhhhhh';
// Twitter APIの認証とレスポンス取得
function tweetsend() {
var service = getService();
var tweet = sheet.getRange(6,3).getValue();
if (tweet == '') {
Logger.log('Tweetが選択できませんでした');
return false; // 終了
}
Logger.log('Tweet Selected : '+tweet);
if (service.hasAccess()) {
var url = 'https://api.twitter.com/1.1/statuses/update.json';
var payload = {
status: tweet
};
var response = service.fetch(url, {
method: 'post',
payload: payload
});
} else {
sheet.getRange(6,7).setValue(date);
var authorizationUrl = service.authorize();
Logger.log('URLを確認してください: %s',
authorizationUrl);
}
}
//function doGet() {
// return HtmlService.createHtmlOutput(ScriptApp.getService().getUrl());
//}
// 認証リセット関数。デバッグ時の初期化用。
//function reset() {
// var service = getService();
// service.reset();
//}
// サービス設定
function getService() {
return OAuth1.createService('Twitter')
.setConsumerKey(CONSUMER_KEY) // コンシューマーキー&シークレット
.setConsumerSecret(CONSUMER_SECRET) // コンシューマーシークレット
.setAccessToken(TOKEN, TOKEN_SECRET) // アクセストークンキー&シークレット
// oAuthエンドポイントURL
.setAccessTokenUrl('https://api.twitter.com/oauth/access_token')
.setRequestTokenUrl('https://api.twitter.com/oauth/request_token')
.setAuthorizationUrl('https://api.twitter.com/oauth/authorize')
.setCallbackFunction('authCallback') // コールバック関数名
}
// OAuthコールバック
function authCallback(request) {
var service = getService();
var authorized = service.handleCallback(request);
if (authorized) {
return HtmlService.createHtmlOutput('成功しました');
} else {
return HtmlService.createHtmlOutput('失敗しました');
}
}
(10) TwitterのGAS2 tweet.gs
function tweet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('sheet3');
//var c3_data = sheet.getRange(6,3).getValues(); //タイトル
//var d3_data = sheet.getRange(6,4).getValues(); //本文
//var e3_data = sheet.getRange(6,5).getValues(); //関係リンク
var f6_data = sheet.getRange(6,6).getValues(); //アクション
const init_g6_data = sheet.getRange(6,7).getValues(); // 戻り値 投稿日時
const olddate = sheet.getRange(6,7).getValues(); //直前の投稿日時
var ocontent = sheet.getRange(6,10).getValues(); //前回の投稿内容
var ncontent = sheet.getRange(6,3).getValues(); //今回の投稿内容
var date = new Date();
//前回の投稿内容と今回の投稿内容が同じなら、投稿せず通過する。falseにする。
if(ocontent != ncontent){
if(f6_data == "true" ){
// tweetの投稿を実行する
sheet.getRange(6,10).setValue(ncontent);
tweetsend();
sheet.getRange(6,7).setValue(date);
sheet.getRange(6,8).setValue("投稿済みです。");
sheet.getRange(6,6).setValue("false");
}
else {
sheet.getRange(6,7).setValue(olddate);
sheet.getRange(6,8).setValue("投稿せず通過しました。");
sheet.getRange(6,6).setValue("false");
}
}
else {
sheet.getRange(6,7).setValue(olddate);
sheet.getRange(6,8).setValue("投稿せず通過しました。");
sheet.getRange(6,6).setValue("false");
}
}