「買い物リスト」の作成にあたり、以下のアプリケーション連携をしようとした時の話です。
「GAS」のスクリプト部分で躓いたため、初心者の方の参考になればと思い、記事にしました。
##構成
以下、全体構成のうち、本記事は赤枠部分について記録しています。
##やりたかったこと
スプレッドシートに書き込んだ買い物リストの項目のうち、最大15行分のデータを出力したいのですが、なぜか先頭の1行しか表示されず。
##失敗したコードはこちら
function myOutgoingFunction(){
// Webhook URL
//Integromatで作成したWebhookのURL(末尾にパラメータ用の「?text=」を付ける)
const URL='https://hook.integromat.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXX?text=';
//シートは一つしかないのでID指定の必要なし
const sheet = SpreadsheetApp.getActiveSheet();
//セルと取得する行数を指定する方法(A1から15行分取得)
var name = sheet.getRange("A1:A15").getValues();
// POSTする中身
const Payload = {
'content': name,
};
//パラメータを定義する
const params = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(Payload),
}
// HTTPリクエスト送信
const res = UrlFetchApp.fetch(URL,params);
}
##修正後のコードはこちら
POSTやリクエスト部分を書き換えることで、取得可能となりました。
function myOutgoingFunction(){
// Webhook URL
//Integromatで作成したWebhookのURL(末尾にパラメータ用の「?text=」を付ける)
const URL='https://hook.integromat.com/XXXXXXXXXXXXXXXXXXXXXXXXXXX?text=';
//シートは一つしかないのでID指定の必要なし
const sheet = SpreadsheetApp.getActiveSheet();
//セルと取得する行数を指定する方法(A1から15行分取得)
var name = sheet.getRange("A1:A15").getValues().toString();
//カンマを改行に置換しながらGETリクエストを投げる。
UrlFetchApp.fetch(URL + encodeURIComponent(name.replace(/,/g,'\n')));
}
元々のコードのうち、修正を加えたのは以下の箇所です。
取得したテキストを改行して表示させるため、replace処理を追加しています。
//セルと取得する行数を指定する方法(A1から15行分取得)
var name = sheet.getRange("A1:A15").getValues().toString();
//カンマを改行に置換しながらGETリクエストを投げる。
UrlFetchApp.fetch(URL + encodeURIComponent(name.replace(/,/g,'\n')));
参考とした記事は、以下のとおりです。