GAS サービスアカウント OAuth2 なかなかはまったのでメモ。

 

2023-08-10

現在の問題。

”承認が必要です
このプロジェクトがあなたのデータへのアクセス権限を必要としています。”

GCPのIAMと管理で権限がどうなるかチェックしておこうかな。

つまりプロパティに設定してもそのままではJSONだったので動かなかったという落ちでした。

何が原因なのかBase64charかどうか判定するなどやってようやく解決できました。

 

function findNonBase64Char(PRIVATE_KEY) {
  var base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  for (var i = 0; i < PRIVATE_KEY.length; i++) {
    if (base64Chars.indexOf(PRIVATE_KEY[i]) === -1) {
      Logger.log('Non-Base64 character found at position ' + i + ': ' + PRIVATE_KEY[i]);
    }
  }
}

function test_auth(){
  // Your Google Service Account's email and private key
//  var PRIVATE_KEY = PropertiesService.getScriptProperties().getProperty('PRIVATE_KEY');
 // var PRIVATE_KEY = PropertiesService.getScriptProperties().getProperty('PRIVATE_KEY').trim();
  var PRIVATE_KEY = JSON.parse('"' + PropertiesService.getScriptProperties().getProperty('PRIVATE_KEY').trim() + '"');


  //Logger.log(PRIVATE_KEY);
  var CLIENT_EMAIL = PropertiesService.getScriptProperties().getProperty('CLIENT_EMAIL');

  if (typeof PRIVATE_KEY !== 'string') {
    Logger.log('PRIVATE_KEY is not a string');
    return;
  }
  var match = PRIVATE_KEY.match(/-----BEGIN PRIVATE KEY-----(.*)-----END PRIVATE KEY-----/s);
  if (!match) {
    Logger.log('PRIVATE_KEY does not contain a key');
    return;
  }
  var keyBody = match[1];
  if (!/^[A-Za-z0-9+/= \n]+$/.test(keyBody)) {
  Logger.log('The body of PRIVATE_KEY is not a Base64-encoded string');
  findNonBase64Char(keyBody);
  
  return;
}



  

  // OAuth2 service
  var service = OAuth2.createService('Google Sheets')
    .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
    .setTokenUrl('https://accounts.google.com/o/oauth2/token')
    .setPrivateKey(PRIVATE_KEY)
    .setIssuer(CLIENT_EMAIL)
    .setPropertyStore(PropertiesService.getScriptProperties())
    .setScope('https://www.googleapis.com/auth/spreadsheets');

  // Reset the service
  service.reset();

  if (!service.hasAccess()) {
    var error = service.getLastError();
    Logger.log('Authentication failed: ' + error);
    return;
  }

  // Spreadsheet ID
  var spreadsheetId = 'これもプロパティから取得すべきかな?';

  // Google Sheets API URL
  var url = 'https://sheets.googleapis.com/v4/spreadsheets/' + spreadsheetId + '?includeGridData=true';

  // HTTP options
  var params = {
    headers: {
      Authorization: 'Bearer ' + service.getAccessToken()
    }
  };

  // Fetch spreadsheet data
  var response = UrlFetchApp.fetch(url, params);
  var data = JSON.parse(response.getContentText());

  // Get the number of columns in the 'log' sheet
  var sheetData = data.sheets.find(function(sheet) {
    return sheet.properties.title === 'log';
  });

  if (sheetData) {
    var cols = sheetData.data[0].rowData[0].values.length;
    Logger.log(cols);
  } else {
    Logger.log('Sheet not found');
  }

  
}

Solayer。SolanaのRestaking 経過メモ Solayer Emerald Card

2025-06-18 誰にでもお勧めできない。作成費用高いし。

でも私は作った。75ドルかかったので割は多分よくない。(エアドロは過剰な期待はしないことにしている)

参入遅れたから仕方ない(初期から参入していた人は10ドルで作れたみたい)

で、用はWallet(私はBackpac)の資産をリアルで使える(具体的にはアマゾンとか)

やっとここまで来たかという感じ。自己管理ウォレットで買い物できれば、大手権力基盤みたいなのに囲い込まれている感から脱出できた感じがする。

用は最終的にリアルワールドで利用するには大手既得権団体の管理するゲートを通らないといけないという縛りから一寸抜け出た感じがしなくもない。

 

 

 

2025-06-06 Solayer Emerald Card 作りました。

75ドルかかった。

私の紹介リンクになっています。

https://app.solayer.org/card?invite=39QTQ4

とりあえず接続はBackpac まだ何もしてないけどチャージに1%ほどかかる。

後税金計算の関係もあると思うので、いちいちメモしたほうがいいのかもしれない

 

2024-06-05 とりあえず単に登録しただけ。
created by Rinker
72ACWY 私の紹介コードになっています。 投資を推奨しているわけではありません。 72ACWY

トレードメモ,STLA,ステランティス

created by Rinker
トレードツールTradingviewの紹介リンクです。

このツールを使っていますが、私の分析はあてになりません。

要は単なるメモです。どうせ当たりませんし。
投資は自己責任で。投資を推奨しているわけではありません。

というか、このツールは無料で相当なことができるので、あえて有料版にする必要があるかは微妙です。

無料の機能で十分なら使わなきゃ損とも思います。

 


2024-07-29 トラネコさんの銘柄 急落してた

要はちょっとだけエントリーしておくか。