LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Wednesday, April 29, 2020

配列の要素をシャッフルして元のindex値も知りたい


配列をシャッフルする方法は以下↓にも書きましたが
https://www.pre-practice.net/2018/02/javascript_18.html

シャッフルしたindexも取得したくてindexArrayを追加しました。



コード.gs
function shuffleIndexAndWords() {
  var originalWords = ["Practice", "makes", "the", "impossible", "possible"];
  
  var indexArray = [];
  for(var i = 0; i < originalWords.length; i++) {
    indexArray.push(i);// [1, 2, 3,…]という配列を作る
  }

  var shuffledIndex = shuffle(indexArray);// indexArrayをシャッフルする
  Logger.log(shuffledIndex);
  
  var shuffledWords = [];
  for(var j = 0; j < indexArray.length; j++) {
    shuffledWords.push(originalWords[shuffledIndex[j]]);// originalWordsをシャッフルした配列を作る
  }
  Logger.log(shuffledWords);
}


function shuffle(originalWords) {
  var len = originalWords.length;
  for(var i = 0; i < 10; i++){// 混ぜる回数を設定する
    var rand = Math.floor(Math.random() * len);

    var word0 = originalWords[0];
    var wordsRand = originalWords[rand];
    
    originalWords[rand] = word0;
    originalWords[0] = wordsRand;
  }
  var words = originalWords;
  return words;
}


実行結果

以下のようなログが出力されます。
実行する度に結果は異なります。

配列内の値をランダムで返したい


配列内の値をランダムでログに出力するコードを書きました。


getPrise()を実行するとmessage配列内の値のどれかがログに出ます。

コード.gs
// これを実行してランダムメッセージをログに出す
function getPrise() {
  var prise = returnPraise();
  Logger.log(prise);
}

// メッセージからランダムで一つ返す
function returnPraise() {
  var message = [
    "Great!",
    "Excellent!",
    "Nice Going!",
    "Cool!",
    "Wonderful!",
    "Fantastic!",
    "Terrific!",
    "Awesome!",
    "Perfect!",
    "Good!",
    "Nice!",
    "Brilliant!",
    "Marvelous!",
    "Fabulous",
    "Amazing"
  ]
  var len = message.length;// メッセージの数=配列の要素数
  var rand = Math.random();// 0〜1の乱数(0.xxx…)
  var lenRand = len * rand;// lenのランダム
  var index = Math.floor(lenRand);// 少数点以下を切り捨てる

  var result = message[index];
  Logger.log([len, rand, index, result]);
  return result;
}

// 検証用:100回繰り返してランダムになっているか確認
function iterate() {
  for(var i = 0; i < 100; i++) {
    returnPraise();
  }
}



Saturday, April 25, 2020

テキストエリアに入力した末尾の文字を取得したい


console.logに出してみるデモ。





コード.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile("index");
}
意訳
この機能がやること
指定したHTMLファイルを表示する




index.html
<!DOCTYPE html>
<html>
  <body>
    <textarea id="ta"></textarea>

<script>
elem("ta").onkeyup = taKeyup;

function elem(id) {
  return document.getElementById(id);
}

function taKeyup(e) {
  var taValues = elem("ta").value;
  var taValuesSplit = taValues.split("");
  var taValuesLength = taValuesSplit.length;
  var lastText = taValuesSplit[taValuesLength-1];
  console.log([taValuesSplit, taValuesLength, lastText]);
}

</script>
  </body>
</html>



lastTextが末尾のテキスト。



Monday, April 20, 2020

ChromeでGmailの通知が来ない時にやったこと(Mac)


おそらく過去の自分が通知しないように何らかの設定をした。
どんな設定をしたのか思い出せなかったので、以下の方法で通知を復活させました。



STEP1
Chromeの設定の
プライバシーとセキュリティの
サイトの設定の
通知を開きます
chrome://settings/content/notifications


STEP2
許可の「追加」をクリックします


STEP3
サイトに
https://mail.google.com
を入力して追加をクリックします


これでデスクトップに通知が来るようになりました。


補足

STEP3で追加したGmailの▶アイコンをクリックして



通知が「許可」になっていないと通知は来ません。





補足2

メール通知を変更する
 には以下のように記載されていましたが、
注: ブラウザですべての通知をオフにしている場合、通知は表示されません。
その方法が書かれていなくて調べて 通知をオンまたはオフにする を見つけました。


参考

メール通知を変更する
https://support.google.com/mail/answer/1075549?hl=ja&visit_id=1587354885873-1919833033375980950&rd=1

通知をオンまたはオフにする
https://support.google.com/chrome/answer/3220216?co=GENIE.Platform%3DDesktop&hl=ja

Monday, April 13, 2020

スプレッドシートの2行目にデータを挿入したい insertRowAfter(1)


こういうシートがあって


2行目にデータを入れたい
この例ではA2にabc, B2にxyzを挿入する



コード.gs
function myFunction() {
  var sheetUrl = "SPREADSHEET_URL";// 対象のシートURL
  var sheet = SpreadsheetApp.openByUrl(sheetUrl).getSheets()[0];// 先頭シートを取得
  sheet.insertRowAfter(1);// 行を挿入する
  var values = [["abc", "xyz"]];// 入力する値たち
  var range = sheet.getRange(2, 1, 1, values[0].length);// 入力する範囲
  range.setValues(values);// 入力する
}


Friday, April 10, 2020

JIRAにステータスを追加したい


JIRAにステータスを追加したときの備忘録です。

  1. 新規ステータスを作成する
  2. ワークフローでステータスを追加する
  3. ボードにステータスを配置する


1. 新規ステータスを作成する


Jira settingsを開きます


Issuesを選択します


Statusesを選択します


Add statusを選択します


必要な項目を入力して「Add」をクリックします
ここではステータス名を「確認中」
Categoryを「In Progress」としました
これでステータスを作成できました。


2. ワークフローでステータスを追加する

新規ステータスを作成したあとは、そのステータスを使うプロジェクトのワークフローに追加してみます


Project settingsを選択します


Workflowsを選択します


Actionsの鉛筆マークをクリックします


Add statusをクリックして
新規作成したステータスを選択します
(ここでは先ほど作成した「確認中」を選択しています)
Addをクリックします


どのステータスからも変更できるようにしたい場合はチェックします


このままだと下書きの状態でまだ反映されていないため
Publish Draftをクリックします


Save a backup copy?はここではYesにしました
Publishをクリックすると反映されます

これでワークフローにステータスを追加できました。


3. ボードにステータスを追加する

① ボードを選択して
② Columnsを選択して
③ Add columnをクリックして
④ 追加した列の名称を書き換えます


右側の「確認中」ステータスを追加した列に配置します

これでボードにステータス配置できました。



以上でステータスの追加ができました。



Wednesday, April 8, 2020

JIRA APIでテキストのフォーマットを指定したい


こちらにマークダウンの一覧がありました。
https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all&_ga=2.68118290.2006122158.1586302546-436010324.1566793191



補足

見つけた経路

  • commentのAPIで<hr>を表現したかった
  • commentのAPIリファレンスを見てもよくわからなかった
  • 実際の課題に手動でコメントにDividerを追加してみた
  • それをGETのAPIで取得してresponseを見た
  • 対象の部分は「-- --」になっていた
  • 「-- --」でPOSTしてみると画面上は「--」になった
  • ググった


そして見つけたのが以下のページで、その中に上記の一覧ページへのリンクがありました。


参考

https://community.atlassian.com/t5/Answers-Developer-Questions/JIRA-wiki-markup-via-REST-API-into-PHP/qaq-p/497489

Add comment
https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-comment-post

setPropertiesで一括でプロパティを保存したい


このようなプロパティを一括で保存したい



プロパティをひとつずつ保存する場合は
ScriptPropertiesを読み書きしてみる



コード.gs
function setScriptProps(){
  var propsObj = {
    "id": "123",
    "name": "foobar"
}
  var ScriptProperties = PropertiesService.getScriptProperties();
  ScriptProperties.setProperties(propsObj); 
}



関連記事

ScriptPropertiesを読み書きしてみる

他の関連記事
PropertiesService



Sunday, April 5, 2020

ArrayformulaはA1Notationの箇所を対象範囲に変えて使う


タイトルに思いを込めましたが、Arrayformulaを使う際の備忘録です。


公式のヘルプを見たけれどよくわからなかったので、手元で試した結果を書き残します。

ドキュメント エディタ ヘルプ
ARRAYFORMULA


今回試したこと
  • シートのA, B, C列の値を/でつなげて表示する

以下2つの方法で試します。
  1. Arrayformulaではなくセル毎に関数を入れる方法
  2. Arrayformulaで処理する方法

1はE2に「=A2&"/"&B2&"/"&C2」を入れてE6まで引っ張って入力する。
2はG2に「=Arrayformula(A2:A6&"/"&B2:B6&"/"&C2:C6)」を入れるだけ。


デモ用に作ったシートはこんな感じです。


ポイント

E列に入っている「=A2&"/"&B2&"/"&C2」〜「=A6&"/"&B6&"/"&C6」

G2では「=Arrayformula(A2:A6&"/"&B2:B6&"/"&C2:C6)」
という関数で表現しました。


理解を深めるために色分けして分解してみます。

E列の
=A2&"/"&B2&"/"&C2 〜 =A6&"/"&B6&"/"&C6



G2で
=Arrayformula(
  A2:A6&"/"&B2:B6&"/"&C2:C6
)

と表現しています。


E列のA2をG2では対象範囲であるA2:A6としています。
E列のB2もG2では対象範囲であるB2:B6としています。
E列のC2も同様にG2ではC2:C6と範囲で表現しています。

つまり
E列では「対象のセル番地」で計算しますが、G2では「対象範囲」で計算しています。


ちなみに
「A1, B1などセル番地で表記」することを「A1Notation」と表現するようです。


なので
ArrayformulaはA1Notationの箇所を対象範囲に変えて使う
というタイトルにしました。


以上です。


関連記事

参考

ARRAYFORMULA
https://support.google.com/docs/answer/3093275?hl=ja

A1 notation
https://developers.google.com/sheets/api/guides/concepts#a1_notation

Saturday, April 4, 2020

Salesforceの開発環境を無料で試してみたい(Developers Editoin)


無料トライアルは使用期間が限定されますが、Developers Editionなら条件を満たせば期限に縛られることはないようです。

期限については以下のページに記載がありました。
6ヶ月以上の期間を空けずに継続的に利用をしていれば、あなたのDeveloper Edition組織が期限切れになる事はありません。
Force.com Developer Edition組織について 

サインアップ手順は以下のページにありました。

Developer Edition サインアップ手順
https://developer.salesforce.com/jpblogs/2016/04/developer-edition-signup/


実際にサインアップしてみる

上記の手順にもありましたが、手元でやった手順を書き残していきます。


STEP1
サインアップ画面で情報を入力して「サインアップ」をクリックします。


STEP2
このような画面に切り替わるので、指示通りメールを確認します。


STEP3
サインアップ時の「メール」欄に設定したアドレスに以下のようなメールが来ます。
「アカウントを確認」をクリックします。


STEP4
パスワードを変更します


Salesforceの画面が起動しました。



参考

Salesforce Developer サイト
https://developer.salesforce.com/ja/

Developer Edition サインアップ手順
https://developer.salesforce.com/jpblogs/2016/04/developer-edition-signup/

Force.com Developer Edition組織について
https://developer.salesforce.com/index.php?title=JP:Developer_Edition&oldid=47185

REST API 開発者ガイド
ステップ 1: Salesforce Developer Edition 組織を取得する
https://developer.salesforce.com/docs/atlas.ja-jp.api_rest.meta/api_rest/quickstart_dev_org.htm

Trailhead Playground と Developer Edition 組織の違いは何でしょうか。
https://trailhead.salesforce.com/ja/content/learn/modules/trailhead_playground_management/create-a-trailhead-playground

Latest post

Extracting data from Google Sheets with regular expressions

Introduction Regular expressions are a powerful tool that can be used to extract data from text.  In Google Sheets, regular expressions ca...