From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?Q?Andr=C3=A9s_Ram=C3=ADrez?= Newsgroups: gmane.emacs.help Subject: using ses programatically Date: Mon, 21 Aug 2023 00:37:46 +0000 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28629"; mail-complaints-to="usenet@ciao.gmane.io" Cc: boruch_baum@gmx.com To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Aug 21 02:43:51 2023 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qXt1L-0007DM-1p for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 21 Aug 2023 02:43:51 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qXt0c-00038g-A7; Sun, 20 Aug 2023 20:43:06 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXt0a-00038Q-6M for help-gnu-emacs@gnu.org; Sun, 20 Aug 2023 20:43:04 -0400 Original-Received: from mail-mw2nam10acsn20807.outbound.protection.outlook.com ([2a01:111:f400:7e89::807] helo=NAM10-MW2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXt0W-0001fh-Qy for help-gnu-emacs@gnu.org; Sun, 20 Aug 2023 20:43:03 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LS/WOOXVrHTMA13PYzPKi0kxd3ORNOzliCXyaCCz/nAw/Q9WiB1xYSr9pA3QgnTPpVk97l7tbZGagM1kooQaJ+MIM5r2874vLf15oSDHevxtQijfU+PgkoauV5mc9Ey5rgGWiNgMCYsbiWYIG6SoEG2ekbr2b4pau/YVTFHPN+iDRjCttG4o0AnlrcT5YWGBLV8TJgL2mKqE63vPADLg1rBqZfikUzn1wNf42LE9w8O8xAUyiqnnQTygzyHxbJ3ifK/qkmomlot6+s6gdfWe8eQ37sRqQSIhR4djJUS6lie3qw9oSSmJRO0qMwvd3s/w2MtjTdUP7HElpUY77rhZ+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xv9SmF/irGNRSXiYGoS/tyMKstT4zt1UFRt3U67gb7A=; b=dLP595P9ToYbhuE8nVHzuZCyno3HgxCeBkbLN+v/4miaSzU27FyLN9BVjmELIWOSecrtPewTS1SkzV/8BJwYM+IdjnXsSZDPi4SY+97ip7koyC1bQuWeC4IEGH42HjUg+/Hiy4n13YcQu71c7sl1wbsrp/113OOuByNRg/4krXJvpucdqnZ3igt1kGintWRrs+bduMvPVrQND70BxY3DjMKND4vycyf0sPxjl7pAqzbH6PbRH23O3tdOM29J9rMWAK2XBAXobgtE/gAD2TStys3keTkuuYIatXtjqtRVQZWkAK4xlDjYces++Z+ccHBg6YXkEYCtQpD1OIcvw8iRFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xv9SmF/irGNRSXiYGoS/tyMKstT4zt1UFRt3U67gb7A=; b=tPWLQ4oPqdtUiadSuFHrYWMzRQDvFZ/EdRiCvIE2LywMZcj1k/hGlbfMag7HdVWfJdWLtwhF0t5bAYTkdos2zKOTjNU2thHknuxOx9h+H0JbLDSTJjKSUOoZKoHcjp96wRzWiNE2lFcRIFlOk7vi34WwafQ3HDs+YGL5tgPmYz/Y0MSFKwXLeuXy5f0X044/f9Y7GoSFUYA8Ch4ozicj12RfPw1R6C08wEvKsP8wVG4YodKghEN+8q1MiuEgleZJOsouCShw/vZ+2HdumJdmoWxPuJfMEtKAlw36Lqn9YzbaiZEPYWMRIhossumXVxty+I/Db4m0uK6tSTXC4x2VzA== Original-Received: from SJ1PR12MB6363.namprd12.prod.outlook.com (2603:10b6:a03:453::9) by CH3PR12MB8877.namprd12.prod.outlook.com (2603:10b6:610:170::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.24; Mon, 21 Aug 2023 00:37:55 +0000 Original-Received: from SJ1PR12MB6363.namprd12.prod.outlook.com ([fe80::42f9:83ca:9a18:2878]) by SJ1PR12MB6363.namprd12.prod.outlook.com ([fe80::42f9:83ca:9a18:2878%5]) with mapi id 15.20.6699.020; Mon, 21 Aug 2023 00:37:55 +0000 X-TMN: [9NF3GbIeoPthdxmK3k/nU6F21lYBm4YJ] X-ClientProxiedBy: SC1PR80CA0151.lamprd80.prod.outlook.com (2603:10d6:4:7c::32) To SJ1PR12MB6363.namprd12.prod.outlook.com (2603:10b6:a03:453::9) X-Microsoft-Original-Message-ID: <86jztp44dh.fsf@hotmail.com> X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PR12MB6363:EE_|CH3PR12MB8877:EE_ X-MS-Office365-Filtering-Correlation-Id: bd404cda-ca50-448c-b4c1-08dba1dedb83 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nz/hzhMUT5YbxC6K4H8Xlygo/2+TOJCvh0nCdVbARLhknhrt0LBjoc1WOE+qoA/nhD3rTUoY+Fk/ReYDi9JC0HBK+6DNYOYwA577vOIJ7J5qtZarXcmD/pgnUbruO3cFKsIwOYxYXVumcO9glDaNhQduycRiHuGAICSAh0gvQYkG/wGyl2tGMpBod6tzjdZ6O2iIJD6PcqJkPGQqGUpod/gxDq3wspk9QMpM7pdZVb/JvFu77NgjG/dtUeU9YS5lJxXSqWxVUcSWSDrKA5XVzKO2jl/Olp1AXQ1tieIkzzPbkDh/sBc7Eb6yTw5LJ7ze7UX702rkUnBNKTRToqKvB9b4AQBO2fp6uFclGYBFfh5BoNkEIFXgXI7EI+T1TUMQ7hJvbBuZ8u/M+hdnKrpv6+RYC1Ew2ajiQ5VJ2Q9m99/YexP/PhlS5UHcnbzcYvOmmfPi29D+Da7jOVxnBJC0EHTfXBcQEiR5oZ4AnalxjBDuFwNV9xXXcg9fwMJBKMiZs1rUziVip6NSQwSP9fUYDRwUQGlukhGxBtg9c04eTTa4IdDW7TsFoiRKo+VzZwUw X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bXVFdjFVOW1UL0w5ZFBTcS9hRkRXZjhqTCtlcWVMcGhTSTYzK3NMb0NDemhB?= =?utf-8?B?WU5LVWdBdGlENTBQb2NISjlZN1UzcWYzTVVETSs0QWJ1NFpQeEJVTE1TcHo0?= =?utf-8?B?NUNyUFNIR2tzZW5kNFdsSDlUSWFGSVJNVk5keVdmU2R5OUEyOHg0aWhVRkpN?= =?utf-8?B?SGVHbUpZQnZtN1gxZlFsSjd0cXFtbmF3a0VFcU5VOC9UOW1nRXR4aHdPbTFB?= =?utf-8?B?U1FvclpOZWtIaUUyc1JCK2ZSVW9wM2lpQnBrVFgzazhzeVFaV2E2ZkVyeUVK?= =?utf-8?B?Y0s3MkRKdzR5ZVRZeWV1TFZFS2RodFgwNnV0eWhyVEF0QzQyS1pKQmdudjVQ?= =?utf-8?B?Qm51Tkh1QTAyakkvTnNDQWNtK0srNmFTN25BS3RnWUVtT2J5eWJGRC9paHNP?= =?utf-8?B?K0c2ME9WWFBEVnBQY1FOTjJLb3ZWazBEeTdPS3JXTDYwQ25HeDcwcHhzMGtE?= =?utf-8?B?YnRyUEc4NDF4dTBkYXc2QUJnd1lFMnBIRjVJM01HMWRBZU1QbVhEY2w4ZjEz?= =?utf-8?B?QmY2TFFTQmxNaHRwa3kydm9jN1dCaExkY3ZGUWlRQ3B5Z0ozSXRSdXhmY09i?= =?utf-8?B?azBINjhuQ3Z0YjduaFFBUmwvZW84M0o5bHdKeU4xQUdENnc3YzlJZkZLUlNX?= =?utf-8?B?R1loYTJtTG9DTzZmOThhQ1Zuc3pCMGhGN24wOU X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-71ea3.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: bd404cda-ca50-448c-b4c1-08dba1dedb83 X-MS-Exchange-CrossTenant-AuthSource: SJ1PR12MB6363.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2023 00:37:55.4258 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8877 Received-SPF: pass client-ip=2a01:111:f400:7e89::807; envelope-from=rrandresf@hotmail.com; helo=NAM10-MW2-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:144890 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi. It is about using ses programatically for doing on the fly calculations. The process has three parts: 1. input file '/tmp/ses202307' 2. template file '/tmp/workbook.ses' 3. elisp file '/tmp/smeter.el' The output is the file '/tmp/smeter.mbox' The process is working with a couple of workarounds. workaround one: it needs yank. workaround two: manual recalculation of affected cells As attachments: You would fine 1. smeter.el (version with workarounds) 2. smeter-version-wished-works.el (the name explains it) The questions are: 1. Is it a bug on 'ses-recalculate-all' (see smeter-version-wished-works.el= ) 2. why the yank workaround is needed. Why it causes it to work. (see smeter.el) 3. which one is the right syntax for (ses-range) programatically. 4. how should a user consult a cell value programatically. Best Regards Andr=C3=A9s Ram=C3=ADrez --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=ses202307 Content-Transfer-Encoding: base64 Content-Description: input L3RtcC93b3JrYm9vay5zZXMKMjk5MC41MgoxNzgzLjk5OAoyMDQ2LjMyMwo0OC4yNzIKMTY0LjIK MzAwMy41ODgKMTc5Ny41NDMKMjA1Ni45NDYKNDguMjcyCg== --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=workbook.ses Content-Transfer-Encoding: base64 Content-Description: spreadsheet ICAgICAgICAgIFByZXZpb3VzICAgQWN0dWFsIERpZmZlcmVuY2UgICAgIEZhY3RvciAgIFN1YnRv dGFsIEZpeC5DaGFyZ2UgICAgICAgIElWQSAgICAgIFRvdGFsIFByb3BvcnRpb24gIEFkanVzdGVk JSBLX09yX0oqQmlsIEFkZGluZ0NvbW0gLjJkIEZvcm1hdAogICAgICAgICAgMjAyMzAxMTUgMjAy MzAyMTUgICAgICAgICBtMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiBEcHRvIDEwMSAzMDAzLjU4OCAzMDAzLjU4OCAgICAgICAgICAwICAgICAg MC45MDkgICAgICAgICAgMCAgICAgMS4yMjI1ICAgIDAuMjIwMDUgICAgMS40NDI1NSAgICAgICAw LjI1ICAwLjMzMzMzMzMgICAgICAgICAgMCAgICAgICAgMC41ICAgICAgICAwLjUKIERwdG8gMjAx IDE3OTcuNTQzIDE3OTcuNTQzICAgICAgICAgIDAgICAgICAwLjkwOSAgICAgICAgICAwICAgICAx LjIyMjUgICAgMC4yMjAwNSAgICAxLjQ0MjU1ICAgICAgIDAuMjUgIDAuMzMzMzMzMyAgICAgICAg ICAwICAgICAgICAwLjUgICAgICAgIDAuNQogRHB0byAzMDEgMjA1Ni45NDYgMjA1Ni45NDYgICAg ICAgICAgMCAgICAgIDAuOTA5ICAgICAgICAgIDAgICAgIDEuMjIyNSAgICAwLjIyMDA1ICAgIDEu NDQyNTUgICAgICAgMC4yNSAgMC4zMzMzMzMzICAgICAgICAgIDAgICAgICAgIDAuNSAgICAgICAg MC41CiBEcHRvIDQwMSAgIDQ4LjI3MiAgIDQ4LjI3MiAgICAgICAgICAwICAgICAgMC45MDkgICAg ICAgICAgMCAgICAgMS4yMjI1ICAgIDAuMjIwMDUgICAgMS40NDI1NSAgICAgICAwLjI1ICAwLjMz MzMzMzMgICAgICAgICAgOCAgICAgICAgOC41ICAgICAgICA4LjUKICAgICAgICAgIEZhY3RvciBi ZWxvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAwIGEgMTAgICAgMC45MDkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgMTAg YSAyNSAgICAxLjA1NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAyNSBhIDUwICAgIDIuNjc1ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIApGaXggQW1vdW50OiAgICAgICAgICAgIDQuODkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgSVZBOiAgICAg ICAxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKQmlsbGVkIEFtb3VudDogICAgICAgICAgIDEwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog IENvbW1vbjogICAgICAgIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgoMCihzZXMtY2VsbCBBMSBuaWwgbmls IG5pbCBuaWwpCihzZXMtY2VsbCBCMSAiUHJldmlvdXMiIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwg QzEgQWN0dWFsICdBY3R1YWwgbmlsIG5pbCkKKHNlcy1jZWxsIEQxICJEaWZmZXJlbmNlIiBuaWwg bmlsIG5pbCkKKHNlcy1jZWxsIEUxIEZhY3RvciAnRmFjdG9yIG5pbCBuaWwpCihzZXMtY2VsbCBG MSAiU3VidG90YWwiIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRzEgIkZpeC5DaGFyZ2UiIG5pbCBu aWwgbmlsKQooc2VzLWNlbGwgSDEgIklWQSIgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBJMSAiVG90 YWwiIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgSjEgIlByb3BvcnRpb24iIG5pbCBuaWwgbmlsKQoo c2VzLWNlbGwgSzEgIkFkanVzdGVkJSIgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBMMSAiS19Pcl9K KkJpbGxlZEFtb3VudCIgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBNMSAiQWRkaW5nQ29tbW9uQW1v dW50IiBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIE4xICIuMmQgRm9ybWF0IiBuaWwgbmlsIG5pbCkK CihzZXMtY2VsbCBBMiBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBCMiAiMjAyMzAxMTUiIG5p bCBuaWwgbmlsKQooc2VzLWNlbGwgQzIgIjIwMjMwMjE1IiBuaWwgbmlsIG5pbCkKKHNlcy1jZWxs IEQyIG0zICdtMyBuaWwgbmlsKQooc2VzLWNlbGwgRTIgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNl bGwgRjIgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRzIgbmlsIG5pbCBuaWwgbmlsKQooc2Vz LWNlbGwgSDIgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgSTIgbmlsIG5pbCBuaWwgbmlsKQoo c2VzLWNlbGwgSjIgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgSzIgbmlsIG5pbCBuaWwgbmls KQooc2VzLWNlbGwgTDIgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgTTIgbmlsIG5pbCBuaWwg bmlsKQooc2VzLWNlbGwgTjIgbmlsIG5pbCBuaWwgbmlsKQoKKHNlcy1jZWxsIEEzICJEcHRvIDEw MSIgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBCMyAzMDAzLjU4OCBuaWwgbmlsIChEMykpCihzZXMt Y2VsbCBDMyAzMDAzLjU4OCBuaWwgbmlsIChEMykpCihzZXMtY2VsbCBEMyAwLjAgKC0gQzMgQjMp IG5pbCAoRjMgRTMpKQooc2VzLWNlbGwgRTMgMC45MDkgKGlmICg8PSBEMyAxMCkgQjggKGlmICg8 PSBEMyAyNSkgQjkgQjEwKSkgbmlsIChGMykpCihzZXMtY2VsbCBGMyAwLjAgKGlmICg8PSBEMyAx MCkgKCogRDMgRTMpIChpZiAoPD0gRDMgMjUpICgrICgqIEI4IDEwKSAoKiAoLSBEMyAxMCkgQjkp KSAoKyAoKiBCOSAyNSkgKCogKC0gRDMgMjUpIEIxMCkpKSkgbmlsIChJMyBIMykpCihzZXMtY2Vs bCBHMyAxLjIyMjUgKC8gQzExIDQpIG5pbCAoSTMgSDMpKQooc2VzLWNlbGwgSDMgMC4yMjAwNDk5 OTk5OTk5OTk5NyAoKiAoKyBGMyBHMykgKC8gQjEyIDEwMC4wKSkgbmlsIChJMykpCihzZXMtY2Vs bCBJMyAxLjQ0MjU0OTk5OTk5OTk5OTggKGFwcGx5ICdzZXMrIChzZXMtcmFuZ2UgRjMgSDMpKSBu aWwgKEo2IEo1IEo0IEozKSkKKHNlcy1jZWxsIEozIDAuMjUgKC8gSTMgKGFwcGx5ICdzZXMrIChz ZXMtcmFuZ2UgSTMgSTYpKSkgbmlsIChMMyBLMykpCihzZXMtY2VsbCBLMyAwLjMzMzMzMzMzMzMz MzMzMzMgKC8gSjMgKC0gMSBKNikpIG5pbCAoTDMpKQooc2VzLWNlbGwgTDMgMC4wIChpZiAoPSBM NiA4KSAoKiAoLSBDMTMgKCsgOCAyKSkgSzMpICgqICgtIEMxMyAoKyAwIDIpKSBKMykpIG5pbCAo TTMpKQooc2VzLWNlbGwgTTMgMC41ICgrIEwzICgvIEIxNCA0LjApKSBuaWwgKE4zKSkKKHNlcy1j ZWxsIE4zIDAuNSAoKiAocm91bmQgTTMgMC4wMSkgMC4wMSkgbmlsIG5pbCkKCihzZXMtY2VsbCBB NCAiRHB0byAyMDEiIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgQjQgMTc5Ny41NDMgbmlsIG5pbCAo RDQpKQooc2VzLWNlbGwgQzQgMTc5Ny41NDMgbmlsIG5pbCAoRDQpKQooc2VzLWNlbGwgRDQgMC4w ICgtIEM0IEI0KSBuaWwgKEY0IEU0KSkKKHNlcy1jZWxsIEU0IDAuOTA5IChpZiAoPD0gRDQgMTAp IEI4IChpZiAoPD0gRDQgMjUpIEI5IEIxMCkpIG5pbCAoRjQpKQooc2VzLWNlbGwgRjQgMC4wIChp ZiAoPD0gRDQgMTApICgqIEQ0IEU0KSAoaWYgKDw9IEQ0IDI1KSAoKyAoKiBCOCAxMCkgKCogKC0g RDQgMTApIEI5KSkgKCsgKCogQjkgMjUpICgqICgtIEQ0IDI1KSBCMTApKSkpIG5pbCAoSTQgSDQp KQooc2VzLWNlbGwgRzQgMS4yMjI1ICgvIEMxMSA0KSBuaWwgKEk0IEg0KSkKKHNlcy1jZWxsIEg0 IDAuMjIwMDQ5OTk5OTk5OTk5OTcgKCogKCsgRjQgRzQpICgvIEIxMiAxMDAuMCkpIG5pbCAoSTQp KQooc2VzLWNlbGwgSTQgMS40NDI1NDk5OTk5OTk5OTk4IChhcHBseSAnc2VzKyAoc2VzLXJhbmdl IEY0IEg0KSkgbmlsIChKNiBKNSBKNCBKMykpCihzZXMtY2VsbCBKNCAwLjI1ICgvIEk0IChhcHBs eSAnc2VzKyAoc2VzLXJhbmdlIEkzIEk2KSkpIG5pbCAoTDQgSzQpKQooc2VzLWNlbGwgSzQgMC4z MzMzMzMzMzMzMzMzMzMzICgvIEo0ICgtIDEgSjYpKSBuaWwgKEw0KSkKKHNlcy1jZWxsIEw0IDAu MCAoaWYgKD0gTDYgOCkgKCogKC0gQzEzICgrIDggMikpIEs0KSAoKiAoLSBDMTMgKCsgMCAyKSkg SjQpKSBuaWwgKE00KSkKKHNlcy1jZWxsIE00IDAuNSAoKyBMNCAoLyBCMTQgNC4wKSkgbmlsIChO NCkpCihzZXMtY2VsbCBONCAwLjUgKCogKHJvdW5kIE00IDAuMDEpIDAuMDEpIG5pbCBuaWwpCgoo c2VzLWNlbGwgQTUgIkRwdG8gMzAxIiBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEI1IDIwNTYuOTQ2 IG5pbCBuaWwgKEQ1KSkKKHNlcy1jZWxsIEM1IDIwNTYuOTQ2IG5pbCBuaWwgKEQ1KSkKKHNlcy1j ZWxsIEQ1IDAuMCAoLSBDNSBCNSkgbmlsIChGNSBFNSkpCihzZXMtY2VsbCBFNSAwLjkwOSAoaWYg KDw9IEQ1IDEwKSBCOCAoaWYgKDw9IEQ1IDI1KSBCOSBCMTApKSBuaWwgKEY1KSkKKHNlcy1jZWxs IEY1IDAuMCAoaWYgKDw9IEQ1IDEwKSAoKiBENSBFNSkgKGlmICg8PSBENSAyNSkgKCsgKCogQjgg MTApICgqICgtIEQ1IDEwKSBCOSkpICgrICgqIEI5IDI1KSAoKiAoLSBENSAyNSkgQjEwKSkpKSBu aWwgKEk1IEg1KSkKKHNlcy1jZWxsIEc1IDEuMjIyNSAoLyBDMTEgNCkgbmlsIChJNSBINSkpCihz ZXMtY2VsbCBINSAwLjIyMDA0OTk5OTk5OTk5OTk3ICgqICgrIEY1IEc1KSAoLyBCMTIgMTAwLjAp KSBuaWwgKEk1KSkKKHNlcy1jZWxsIEk1IDEuNDQyNTQ5OTk5OTk5OTk5OCAoYXBwbHkgJ3Nlcysg KHNlcy1yYW5nZSBGNSBINSkpIG5pbCAoSjYgSjUgSjQgSjMpKQooc2VzLWNlbGwgSjUgMC4yNSAo LyBJNSAoYXBwbHkgJ3NlcysgKHNlcy1yYW5nZSBJMyBJNikpKSBuaWwgKEw1IEs1KSkKKHNlcy1j ZWxsIEs1IDAuMzMzMzMzMzMzMzMzMzMzMyAoLyBKNSAoLSAxIEo2KSkgbmlsIChMNSkpCihzZXMt Y2VsbCBMNSAwLjAgKGlmICg9IEw2IDgpICgqICgtIEMxMyAoKyA4IDIpKSBLNSkgKCogKC0gQzEz ICgrIDAgMikpIEo1KSkgbmlsIChNNSkpCihzZXMtY2VsbCBNNSAwLjUgKCsgTDUgKC8gQjE0IDQu MCkpIG5pbCAoTjUpKQooc2VzLWNlbGwgTjUgMC41ICgqIChyb3VuZCBNNSAwLjAxKSAwLjAxKSBu aWwgbmlsKQoKKHNlcy1jZWxsIEE2ICJEcHRvIDQwMSIgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBC NiA0OC4yNzIgbmlsIG5pbCAoRDYpKQooc2VzLWNlbGwgQzYgNDguMjcyIG5pbCBuaWwgKEQ2KSkK KHNlcy1jZWxsIEQ2IDAuMCAoLSBDNiBCNikgbmlsIChGNiBFNikpCihzZXMtY2VsbCBFNiAwLjkw OSAoaWYgKDw9IEQ2IDEwKSBCOCAoaWYgKDw9IEQ2IDI1KSBCOSBCMTApKSBuaWwgKEw2IEY2KSkK KHNlcy1jZWxsIEY2IDAuMCAoaWYgKDw9IEQ2IDEwKSAoKiBENiBFNikgKGlmICg8PSBENiAyNSkg KCsgKCogQjggMTApICgqICgtIEQ2IDEwKSBCOSkpICgrICgqIEI5IDI1KSAoKiAoLSBENiAyNSkg QjEwKSkpKSBuaWwgKEk2IEg2KSkKKHNlcy1jZWxsIEc2IDEuMjIyNSAoLyBDMTEgNCkgbmlsIChJ NiBINikpCihzZXMtY2VsbCBINiAwLjIyMDA0OTk5OTk5OTk5OTk3ICgqICgrIEY2IEc2KSAoLyBC MTIgMTAwLjApKSBuaWwgKEk2KSkKKHNlcy1jZWxsIEk2IDEuNDQyNTQ5OTk5OTk5OTk5OCAoYXBw bHkgJ3NlcysgKHNlcy1yYW5nZSBGNiBINikpIG5pbCAoSjYgSjUgSjQgSjMpKQooc2VzLWNlbGwg SjYgMC4yNSAoLyBJNiAoYXBwbHkgJ3NlcysgKHNlcy1yYW5nZSBJMyBJNikpKSBuaWwgKEs2IEs1 IEs0IEszKSkKKHNlcy1jZWxsIEs2IDAuMzMzMzMzMzMzMzMzMzMzMyAoLyBKNiAoLSAxIEo2KSkg bmlsIG5pbCkKKHNlcy1jZWxsIEw2IDggKGlmICg+IEU2IDIpIG5pbCA4KSBuaWwgKE02IEw1IEw0 IEwzKSkKKHNlcy1jZWxsIE02IDguNSAoKyBMNiAoLyBCMTQgNC4wKSkgbmlsIChONikpCihzZXMt Y2VsbCBONiA4LjUgKCogKHJvdW5kIE02IDAuMDEpIDAuMDEpIG5pbCBuaWwpCgooc2VzLWNlbGwg QTcgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgQjcgIkZhY3RvciBiZWxvdyIgbmlsIG5pbCBu aWwpCihzZXMtY2VsbCBDNyAqc2tpcCogbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBENyBuaWwgbmls IG5pbCBuaWwpCihzZXMtY2VsbCBFNyBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBGNyBuaWwg bmlsIG5pbCBuaWwpCihzZXMtY2VsbCBHNyBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBINyBu aWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBJNyBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBK NyBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBLNyBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2Vs bCBMNyBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBNNyBuaWwgbmlsIG5pbCBuaWwpCihzZXMt Y2VsbCBONyBuaWwgbmlsIG5pbCBuaWwpCgooc2VzLWNlbGwgQTggIjAgYSAxMCIgbmlsIG5pbCBu aWwpCihzZXMtY2VsbCBCOCAwLjkwOSBuaWwgbmlsIChGNiBGNSBGNCBGMyBFNiBFNSBFNCBFMykp CihzZXMtY2VsbCBDOCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBEOCBuaWwgbmlsIG5pbCBu aWwpCihzZXMtY2VsbCBFOCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBGOCBuaWwgbmlsIG5p bCBuaWwpCihzZXMtY2VsbCBHOCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBIOCBuaWwgbmls IG5pbCBuaWwpCihzZXMtY2VsbCBJOCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBKOCBuaWwg bmlsIG5pbCBuaWwpCihzZXMtY2VsbCBLOCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBMOCBu aWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBNOCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBO OCBuaWwgbmlsIG5pbCBuaWwpCgooc2VzLWNlbGwgQTkgIjEwIGEgMjUiIG5pbCBuaWwgbmlsKQoo c2VzLWNlbGwgQjkgMS4wNTUgbmlsIG5pbCAoRjYgRjUgRjQgRjMgRTYgRTUgRTQgRTMpKQooc2Vz LWNlbGwgQzkgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRDkgbmlsIG5pbCBuaWwgbmlsKQoo c2VzLWNlbGwgRTkgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRjkgbmlsIG5pbCBuaWwgbmls KQooc2VzLWNlbGwgRzkgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgSDkgbmlsIG5pbCBuaWwg bmlsKQooc2VzLWNlbGwgSTkgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgSjkgbmlsIG5pbCBu aWwgbmlsKQooc2VzLWNlbGwgSzkgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgTDkgbmlsIG5p bCBuaWwgbmlsKQooc2VzLWNlbGwgTTkgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgTjkgbmls IG5pbCBuaWwgbmlsKQoKKHNlcy1jZWxsIEExMCAiMjUgYSA1MCIgbmlsIG5pbCBuaWwpCihzZXMt Y2VsbCBCMTAgMi42NzUgbmlsIG5pbCAoRjYgRjUgRjQgRjMgRTYgRTUgRTQgRTMpKQooc2VzLWNl bGwgQzEwIG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEQxMCBuaWwgbmlsIG5pbCBuaWwpCihz ZXMtY2VsbCBFMTAgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRjEwIG5pbCBuaWwgbmlsIG5p bCkKKHNlcy1jZWxsIEcxMCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBIMTAgbmlsIG5pbCBu aWwgbmlsKQooc2VzLWNlbGwgSTEwIG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEoxMCBuaWwg bmlsIG5pbCBuaWwpCihzZXMtY2VsbCBLMTAgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgTDEw IG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIE0xMCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2Vs bCBOMTAgbmlsIG5pbCBuaWwgbmlsKQoKKHNlcy1jZWxsIEExMSAiRml4IEFtb3VudDoiIG5pbCBu aWwgbmlsKQooc2VzLWNlbGwgQjExICpza2lwKiBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEMxMSA0 Ljg5IG5pbCBuaWwgKEc2IEc1IEc0IEczKSkKKHNlcy1jZWxsIEQxMSBuaWwgbmlsIG5pbCBuaWwp CihzZXMtY2VsbCBFMTEgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRjExIG5pbCBuaWwgbmls IG5pbCkKKHNlcy1jZWxsIEcxMSBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBIMTEgbmlsIG5p bCBuaWwgbmlsKQooc2VzLWNlbGwgSTExIG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEoxMSBu aWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBLMTEgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwg TDExIG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIE0xMSBuaWwgbmlsIG5pbCBuaWwpCihzZXMt Y2VsbCBOMTEgbmlsIG5pbCBuaWwgbmlsKQoKKHNlcy1jZWxsIEExMiAiSVZBOiIgbmlsIG5pbCBu aWwpCihzZXMtY2VsbCBCMTIgMTggbmlsIG5pbCAoSDYgSDUgSDQgSDMpKQooc2VzLWNlbGwgQzEy IG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEQxMiBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2Vs bCBFMTIgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRjEyIG5pbCBuaWwgbmlsIG5pbCkKKHNl cy1jZWxsIEcxMiBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBIMTIgbmlsIG5pbCBuaWwgbmls KQooc2VzLWNlbGwgSTEyIG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEoxMiBuaWwgbmlsIG5p bCBuaWwpCihzZXMtY2VsbCBLMTIgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgTDEyIG5pbCBu aWwgbmlsIG5pbCkKKHNlcy1jZWxsIE0xMiBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBOMTIg bmlsIG5pbCBuaWwgbmlsKQoKKHNlcy1jZWxsIEExMyAiQmlsbGVkIEFtb3VudDoiIG5pbCBuaWwg bmlsKQooc2VzLWNlbGwgQjEzICpza2lwKiBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEMxMyAxMCBu aWwgbmlsIChMMyBMNCBMNSkpCihzZXMtY2VsbCBEMTMgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNl bGwgRTEzIG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEYxMyBuaWwgbmlsIG5pbCBuaWwpCihz ZXMtY2VsbCBHMTMgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgSDEzIG5pbCBuaWwgbmlsIG5p bCkKKHNlcy1jZWxsIEkxMyBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBKMTMgbmlsIG5pbCBu aWwgbmlsKQooc2VzLWNlbGwgSzEzIG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEwxMyBuaWwg bmlsIG5pbCBuaWwpCihzZXMtY2VsbCBNMTMgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgTjEz IG5pbCBuaWwgbmlsIG5pbCkKCihzZXMtY2VsbCBBMTQgIkNvbW1vbjoiIG5pbCBuaWwgbmlsKQoo c2VzLWNlbGwgQjE0IDIgbmlsIG5pbCAoTTYgTTUgTTQgTTMpKQooc2VzLWNlbGwgQzE0IG5pbCBu aWwgbmlsIG5pbCkKKHNlcy1jZWxsIEQxNCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBFMTQg bmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgRjE0IG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxs IEcxNCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBIMTQgbmlsIG5pbCBuaWwgbmlsKQooc2Vz LWNlbGwgSTE0IG5pbCBuaWwgbmlsIG5pbCkKKHNlcy1jZWxsIEoxNCBuaWwgbmlsIG5pbCBuaWwp CihzZXMtY2VsbCBLMTQgbmlsIG5pbCBuaWwgbmlsKQooc2VzLWNlbGwgTDE0IG5pbCBuaWwgbmls IG5pbCkKKHNlcy1jZWxsIE0xNCBuaWwgbmlsIG5pbCBuaWwpCihzZXMtY2VsbCBOMTQgbmlsIG5p bCBuaWwgbmlsKQoKKHNlcy1jb2x1bW4td2lkdGhzIFs5IDggOCAxMCAxMCAxMCAxMCAxMCAxMCAx MCAxMCAxMCAxMCAxMF0pCihzZXMtY29sdW1uLXByaW50ZXJzIFtuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSkKKHNlcy1kZWZhdWx0LXByaW50 ZXIgIiUuN2ciKQooc2VzLWhlYWRlci1yb3cgMCkKCiggO0dsb2JhbCBwYXJhbWV0ZXJzICh0aGVz ZSBhcmUgcmVhZCBmaXJzdCkKIDIgO1NFUyBmaWxlLWZvcm1hdAogMTQgO251bXJvd3MKIDE0IDtu dW1jb2xzCikKCjs7IExvY2FsIFZhcmlhYmxlczoKOzsgbW9kZTogc2VzCjs7IEVuZDoK --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=smeter-version-wished-works.el Content-Description: elisp1 ;;; with a buffer visiting the file /tmp/ses202307 run this function ;;; /tmp/ses202307 is the output of a newt curses app ;;; /home/user/dev/c/cli/newt/smeter/ (defun smeter/further-processing () "process input on as spreadsheet using ses formulae and composing an email with the ses-output, after ses-recalculate" (interactive) (let ( (sesbuf nil) (measu '()) (prevmeasu '()) (waterbill nil) (beg nil) (workbook-filename) myrowcol ) (goto-char (point-min)) (setq beg (point)) (setq workbook-filename (buffer-substring-no-properties beg (line-end-position))) (forward-line 1) (setq beg (point)) (forward-line 4) (setq prevmeasu (split-string (buffer-substring-no-properties beg (point)) "\n")) (setq beg (point)) (setq waterbill (buffer-substring-no-properties beg (line-end-position))) (forward-line 1) (setq beg (point)) (forward-line 4) (setq measu (split-string (buffer-substring-no-properties beg (point)) "\n")) (if (not (file-readable-p workbook-filename)) (message (format "file not found: '%s'" workbook-filename)) (set-buffer (setq sesbuf (find-file-noselect workbook-filename))) (setq myrowcol (ses-sym-rowcol (intern "C13"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number waterbill)) (setq myrowcol (ses-sym-rowcol (intern "B3"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 0 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "B4"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 1 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "B5"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 2 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "B6"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 3 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "C3"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 0 measu))) (setq myrowcol (ses-sym-rowcol (intern "C4"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 1 measu))) (setq myrowcol (ses-sym-rowcol (intern "C5"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 2 measu))) (setq myrowcol (ses-sym-rowcol (intern "C6"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 3 measu))) (ses-recalculate-all) (ses-jump-safe "N3") ;;; for killing from N3 to N9 the ses-output after applying formulaes (setq beg (point)) (forward-line 4) (copy-region-as-kill beg (point)) (with-temp-buffer ;;; ses-output to an email buffer (insert (current-kill 0)) (goto-char (point-min)) (dotimes (number (- (length prevmeasu) 1)) (beginning-of-line) (insert (concat "| Dpto" (number-to-string (+ number 1)) "01 |" )) (end-of-line) (insert "|") (forward-line)) (org-mode) ;; giving format to the org-table and sum (org-table-align) (org-table-insert-row 1) (org-table-goto-column 2) (insert (org-table-sum)) (org-table-align) (message-mark-inserted-region (point-min) (point-max)) ;;; complete composing mail with header and footer (goto-char (point-min)) (insert "To: foo \nSubject: agua\nFrom: \"me\" \n--text follows this line--\nHi.\n\n") (goto-char (point-max)) (insert "\nBest Regards\n") (write-file "/tmp/smeter.mbox") (message "smeter/further-processing ended")) ;;; kill ses buffer without confirmation (comment line below for not killing the buffer) (set-buffer-modified-p nil) (let ((kill-buffer-query-functions nil)) (kill-buffer sesbuf))))) --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=smeter.el Content-Description: elisp2 ;;; with a buffer visiting the file /tmp/ses202307 run this function ;;; /tmp/ses202307 is the output of a newt curses app ;;; /home/user/dev/c/cli/newt/smeter/ (defun smeter/further-processing () "process input on as spreadsheet using ses formulae and composing an email with the ses-output, after ses-recalculate" (interactive) (let ( (sesbuf nil) (measu nil) (prevmeasu '()) (waterbill nil) (beg nil) (workbook-filename) myrowcol) (goto-char (point-min)) (setq beg (point)) (setq workbook-filename (buffer-substring-no-properties beg (line-end-position))) (forward-line 1) (setq beg (point)) (forward-line 4) (setq prevmeasu (split-string (buffer-substring-no-properties beg (point)) "\n")) (setq beg (point)) (setq waterbill (buffer-substring-no-properties beg (line-end-position))) (forward-line 1) (setq beg (point)) (forward-line 4) (setq measu (buffer-substring-no-properties beg (point))) (if (not (file-readable-p workbook-filename)) (message (format "file not found: '%s'" workbook-filename)) (set-buffer (setq sesbuf (find-file-noselect workbook-filename))) (setq myrowcol (ses-sym-rowcol (intern "B3"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 0 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "B4"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 1 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "B5"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 2 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "B6"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number (nth 3 prevmeasu))) (setq myrowcol (ses-sym-rowcol (intern "C13"))) (ses-set-cell (car myrowcol) (cdr myrowcol) 'value (string-to-number waterbill)) ;;; NOTE2ME: yank is needed workaround-one (ses-jump-safe "C3") ;;; paste 4 cells (kill-new measu) (yank) ;;; (ses-recalculate-all) ;;; NOTE2ME: manual refreshing is needed cos ses-recalculate-all is not doing the job then workaround-two ;;; Key:R1 refreshOne cos of measures ;;; NOTE2ME: ses-dorange should not be needed when ses-recalculate-all works. But It should benefit a lot of persons knowing the right syntax ;;;(ses-dorange (ses-range E3 E6) (ses-calculate-cell row col)) (ses-jump-safe "E3") (ses-recalculate-cell) (ses-jump-safe "E4") (ses-recalculate-cell) (ses-jump-safe "E5") (ses-recalculate-cell) (ses-jump-safe "E6") (ses-recalculate-cell) (ses-jump-safe "F3") (ses-recalculate-cell) (ses-jump-safe "F4") (ses-recalculate-cell) (ses-jump-safe "F5") (ses-recalculate-cell) (ses-jump-safe "F6") (ses-recalculate-cell) ;;; Key:R2 refreshTwo cos of waterBill-change (ses-jump-safe "H3") (ses-recalculate-cell) (ses-jump-safe "H4") (ses-recalculate-cell) (ses-jump-safe "H5") (ses-recalculate-cell) (ses-jump-safe "H6") (ses-recalculate-cell) (ses-jump-safe "I3") (ses-recalculate-cell) (ses-jump-safe "I4") (ses-recalculate-cell) (ses-jump-safe "I5") (ses-recalculate-cell) (ses-jump-safe "I6") (ses-recalculate-cell) (ses-jump-safe "J3") (ses-recalculate-cell) (ses-jump-safe "J4") (ses-recalculate-cell) (ses-jump-safe "J5") (ses-recalculate-cell) (ses-jump-safe "J6") (ses-recalculate-cell) (ses-jump-safe "K3") (ses-recalculate-cell) (ses-jump-safe "K4") (ses-recalculate-cell) (ses-jump-safe "K5") (ses-recalculate-cell) (ses-jump-safe "K6") (ses-recalculate-cell) (ses-jump-safe "L3") (ses-recalculate-cell) (ses-jump-safe "L4") (ses-recalculate-cell) (ses-jump-safe "L5") (ses-recalculate-cell) (ses-jump-safe "L6") (ses-recalculate-cell) (ses-jump-safe "M3") (ses-recalculate-cell) (ses-jump-safe "M4") (ses-recalculate-cell) (ses-jump-safe "M5") (ses-recalculate-cell) (ses-jump-safe "N6") (ses-recalculate-cell) (ses-jump-safe "N3") (ses-recalculate-cell) (ses-jump-safe "N4") (ses-recalculate-cell) (ses-jump-safe "N5") (ses-recalculate-cell) (ses-jump-safe "N6") (ses-recalculate-cell) (ses-jump-safe "N3") ;;; for killing from N3 to N9 the ses-output after applying formulaes , ended-with-ses (setq beg (point)) (forward-line 4) (copy-region-as-kill beg (point)) (with-temp-buffer ;;; ses-output to an email buffer (insert (current-kill 0)) (goto-char (point-min)) (dotimes (number (- (length prevmeasu) 1)) (beginning-of-line) (insert (concat "| Dpto" (number-to-string (+ number 1)) "01 |" )) (end-of-line) (insert "|") (forward-line)) (org-mode) ;; giving format to the org-table and sum (org-table-align) (org-table-insert-row 1) (org-table-goto-column 2) (insert (org-table-sum)) (org-table-align) (message-mark-inserted-region (point-min) (point-max)) ;;; complete composing mail with header and footer (goto-char (point-min)) (insert "To: foo \nSubject: agua\nFrom: \"me\" \n--text follows this line--\nHi.\n\n") (goto-char (point-max)) (insert "\nBest Regards\n") (write-file "/tmp/smeter.mbox") (message "smeter/further-processing ended")) ;;; kill ses buffer without confirmation (comment line below for not killing the buffer) (set-buffer-modified-p nil) (let ((kill-buffer-query-functions nil)) (kill-buffer sesbuf))))) --=-=-= Content-Type: application/mbox Content-Disposition: attachment; filename=smeter.mbox Content-Transfer-Encoding: base64 Content-Description: plain VG86IGZvbyA8aEBwZS5vcmc+ClN1YmplY3Q6IGFndWEKRnJvbTogIm1lIiA8bUBwZS5vcmc+Ci0t dGV4dCBmb2xsb3dzIHRoaXMgbGluZS0tCkhpLgoKLS04PC0tLS0tLS0tLS0tLS0tLWN1dCBoZXJl LS0tLS0tLS0tLS0tLS0tc3RhcnQtLS0tLS0tLS0tLS0tPjgtLS0KfCBEcHRvMTAxIHwgNTQuNjcg fAp8IERwdG8yMDEgfCA1Ni42OCB8CnwgRHB0bzMwMSB8IDQ0LjM1IHwKfCBEcHRvNDAxIHwgICA4 LjUgfAp8ICAgICAgICAgfCAxNjQuMiB8Ci0tODwtLS0tLS0tLS0tLS0tLS1jdXQgaGVyZS0tLS0t LS0tLS0tLS0tLWVuZC0tLS0tLS0tLS0tLS0tLT44LS0tCgpCZXN0IFJlZ2FyZHMK --=-=-=--