4SNSのGAS

(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");
}

}